diff --git a/reactos/dll/win32/netapi32/netapi32.c b/reactos/dll/win32/netapi32/netapi32.c index c58308c78ca..aedaacd050f 100644 --- a/reactos/dll/win32/netapi32/netapi32.c +++ b/reactos/dll/win32/netapi32/netapi32.c @@ -84,24 +84,6 @@ NET_API_STATUS WINAPI NetServerEnumEx( return ERROR_NO_BROWSER_SERVERS_FOUND; } -/************************************************************ - * NetServerDiskEnum (NETAPI32.@) - */ -NET_API_STATUS WINAPI NetServerDiskEnum( - LMSTR ServerName, - DWORD Level, - LPBYTE *Bufptr, - DWORD PrefMaxlen, - LPDWORD EntriesRead, - LPDWORD totalentries, - LPDWORD Resume_Handle) -{ - FIXME("Stub (%s %d %p %d %p %p %p)\n", debugstr_w(ServerName), - Level, Bufptr, PrefMaxlen, EntriesRead, totalentries, Resume_Handle); - - return ERROR_NO_BROWSER_SERVERS_FOUND; -} - /************************************************************ * NetServerGetInfo (NETAPI32.@) */ diff --git a/reactos/dll/win32/netapi32/netapi32.spec b/reactos/dll/win32/netapi32/netapi32.spec index 38b69026d91..f2cba4b3721 100644 --- a/reactos/dll/win32/netapi32/netapi32.spec +++ b/reactos/dll/win32/netapi32/netapi32.spec @@ -211,7 +211,7 @@ @ stdcall NetServerEnum(wstr long ptr long ptr ptr long wstr ptr) @ stdcall NetServerEnumEx(wstr long ptr long ptr ptr long wstr wstr) @ stdcall NetServerGetInfo(wstr long ptr) -@ stub NetServerSetInfo +@ stdcall NetServerSetInfo(wstr long ptr ptr) @ stub NetServerTransportAdd @ stub NetServerTransportAddEx @ stub NetServerTransportDel diff --git a/reactos/dll/win32/netapi32/srvsvc.c b/reactos/dll/win32/netapi32/srvsvc.c index 6b3374d6331..0d4495e5af1 100644 --- a/reactos/dll/win32/netapi32/srvsvc.c +++ b/reactos/dll/win32/netapi32/srvsvc.c @@ -232,6 +232,126 @@ NetRemoteTOD( } +NET_API_STATUS +WINAPI +NetServerDiskEnum( + _In_ LMSTR servername, + _In_ DWORD level, + _Out_ LPBYTE *bufptr, + _In_ DWORD prefmaxlen, + _Out_ LPDWORD entriesread, + _Out_ LPDWORD totalentries, + _Inout_ LPDWORD resume_handle) +{ + DISK_ENUM_CONTAINER EnumContainer; + NET_API_STATUS status; + + TRACE("NetServerDiskEnum(%s %lu %p %lu %p %p %p)\n", + debugstr_w(servername), level, bufptr, prefmaxlen, + entriesread, totalentries, resume_handle); + + EnumContainer.EntriesRead = 0; + EnumContainer.Buffer = NULL; + + RpcTryExcept + { + status = NetrServerDiskEnum(servername, + level, + &EnumContainer, + prefmaxlen, + totalentries, + resume_handle); + + if (EnumContainer.Buffer != NULL) + { + *bufptr = (LPBYTE)EnumContainer.Buffer; + } + else + { + *bufptr = NULL; + } + + if (EnumContainer.EntriesRead > 0) + { + *entriesread = EnumContainer.EntriesRead - 1; + } + else + { + *entriesread = 0; + } + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} + + +#if 0 +NET_API_STATUS +WINAPI +NetServerGetInfo( + LMSTR servername, + DWORD level, + LPBYTE *bufptr) +{ + NET_API_STATUS status; + + TRACE("NetServerGetInfo(%s %lu %p)\n", + debugstr_w(servername), level, bufptr); + + *bufptr = NULL; + + RpcTryExcept + { + status = NetrServerGetInfo(servername, + level, + (LPSERVER_INFO)bufptr); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} +#endif + + +NET_API_STATUS +WINAPI +NetServerSetInfo( + _In_ LPWSTR servername, + _In_ DWORD level, + _In_ LPBYTE buf, + _Out_ LPDWORD parm_err) +{ + NET_API_STATUS status; + + TRACE("NetServerSetInfo(%s %lu %p %p)\n", + debugstr_w(servername), level, buf, parm_err); + + RpcTryExcept + { + status = NetrServerSetInfo(servername, + level, + (LPSERVER_INFO)&buf, + parm_err); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} + + NET_API_STATUS WINAPI NetSessionDel(