}
+NET_API_STATUS
+WINAPI
+I_BrowserDebugTrace(
+ _In_opt_ LPWSTR ServerName,
+ _In_ PCHAR Buffer)
+{
+ NET_API_STATUS status;
+
+ TRACE("I_BrowserDebugTrace(%s %s)\n",
+ debugstr_w(ServerName), Buffer);
+
+ RpcTryExcept
+ {
+ status = I_BrowserrDebugTrace(ServerName,
+ Buffer);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return status;
+}
+
+
NET_API_STATUS
WINAPI
I_BrowserQueryEmulatedDomains(
}
+NET_API_STATUS
+WINAPI
+I_BrowserServerEnum(
+ _In_opt_ LPCWSTR ServerName,
+ _In_opt_ LPCWSTR Transport,
+ _In_opt_ LPCWSTR ClientName,
+ _In_ DWORD Level,
+ _Out_ LPBYTE *BufPtr,
+ _In_ DWORD PrefMaxLen,
+ _Out_ LPDWORD EntriesRead,
+ _Out_ LPDWORD TotalEntries,
+ _In_ DWORD ServerType,
+ _In_opt_ LPCWSTR Domain,
+ _Inout_opt_ LPDWORD ResumeHandle)
+{
+ SERVER_INFO_100_CONTAINER Level100Container = {0, NULL};
+ SERVER_ENUM_STRUCT EnumStruct;
+ NET_API_STATUS status;
+
+ TRACE("I_BrowserServerEnum(%s %s %s %lu %p %lu %p %p %lu %s %p)\n",
+ debugstr_w(ServerName), debugstr_w(Transport), debugstr_w(ClientName),
+ Level, BufPtr, PrefMaxLen, EntriesRead, TotalEntries, ServerType,
+ debugstr_w(Domain), ResumeHandle);
+
+ EnumStruct.Level = 100;
+ EnumStruct.ServerInfo.Level100 = &Level100Container;
+
+ RpcTryExcept
+ {
+ status = I_BrowserrServerEnum((PWSTR)ServerName,
+ (PWSTR)Transport,
+ (PWSTR)ClientName,
+ &EnumStruct,
+ PrefMaxLen,
+ TotalEntries,
+ ServerType,
+ (PWSTR)Domain,
+ ResumeHandle);
+
+ if (status == NERR_Success || status == ERROR_MORE_DATA)
+ {
+ *BufPtr = (LPBYTE)EnumStruct.ServerInfo.Level100->Buffer;
+ *EntriesRead = EnumStruct.ServerInfo.Level100->EntriesRead;
+ }
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return status;
+}
+
+
NET_API_STATUS
WINAPI
I_BrowserQueryStatistics(
}
+NET_API_STATUS
+WINAPI
+NetBrowserStatisticsGet(
+ _In_ LPWSTR ServerName,
+ _In_ DWORD Level,
+ _Out_ LPBYTE *Buffer)
+{
+ BROWSER_STATISTICS_STRUCT StatisticsStruct;
+ BROWSER_STATISTICS_100_CONTAINER Level100Container = {0, NULL};
+ BROWSER_STATISTICS_101_CONTAINER Level101Container = {0, NULL};
+ NET_API_STATUS status;
+
+ TRACE("NetBrowserStatisticsGet(%s %lu %p)\n",
+ debugstr_w(ServerName), Level, Buffer);
+
+ if (Level != 100 && Level != 101)
+ return ERROR_INVALID_LEVEL;
+
+ StatisticsStruct.Level = Level;
+ switch (Level)
+ {
+ case 100:
+ StatisticsStruct.Statistics.Level100 = &Level100Container;
+ break;
+
+ case 101:
+ StatisticsStruct.Statistics.Level101 = &Level101Container;
+ break;
+ }
+
+ RpcTryExcept
+ {
+ status = NetrBrowserStatisticsGet(ServerName,
+ Level,
+ &StatisticsStruct);
+
+ switch (Level)
+ {
+ case 100:
+ if (StatisticsStruct.Statistics.Level100->Buffer != NULL)
+ {
+ *Buffer = (LPBYTE)StatisticsStruct.Statistics.Level100->Buffer;
+ }
+ break;
+
+ case 101:
+ if (StatisticsStruct.Statistics.Level101->Buffer != NULL)
+ {
+ *Buffer = (LPBYTE)StatisticsStruct.Statistics.Level101->Buffer;
+ }
+ break;
+ }
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return status;
+}
+
+
NET_API_STATUS
WINAPI
NetServerEnum(
_In_opt_ LMCSTR domain,
_Inout_opt_ LPDWORD resume_handle)
{
- FIXME("NetServerEnum(%s %lu %p %lu %p %p %lu %s %p)\n",
+ TRACE("NetServerEnum(%s %lu %p %lu %p %p %lu %s %p)\n",
debugstr_w(servername), level, bufptr, prefmaxlen, entriesread,
totalentries, servertype, debugstr_w(domain), resume_handle);
- return ERROR_NO_BROWSER_SERVERS_FOUND;
+ if (resume_handle != NULL)
+ *resume_handle = 0;
+
+ return NetServerEnumEx(servername,
+ level,
+ bufptr,
+ prefmaxlen,
+ entriesread,
+ totalentries,
+ servertype,
+ domain,
+ NULL);
}