From b7bb40a33e774660b550896b9bbf61069b8525a4 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 26 Sep 2017 09:03:27 +0000 Subject: [PATCH] [NETAPI32] Implement NetStatisticsGet() and move NetpNtStatusToApiStatus(). svn path=/trunk/; revision=75972 --- reactos/dll/win32/netapi32/CMakeLists.txt | 1 + reactos/dll/win32/netapi32/misc.c | 115 ++++++++++++++++++++++ reactos/dll/win32/netapi32/netapi32.c | 39 -------- 3 files changed, 116 insertions(+), 39 deletions(-) create mode 100644 reactos/dll/win32/netapi32/misc.c diff --git a/reactos/dll/win32/netapi32/CMakeLists.txt b/reactos/dll/win32/netapi32/CMakeLists.txt index be68e228c7c..0339f76604f 100644 --- a/reactos/dll/win32/netapi32/CMakeLists.txt +++ b/reactos/dll/win32/netapi32/CMakeLists.txt @@ -20,6 +20,7 @@ list(APPEND SOURCE dssetup.c group.c local_group.c + misc.c nbcmdqueue.c nbnamecache.c nbt.c diff --git a/reactos/dll/win32/netapi32/misc.c b/reactos/dll/win32/netapi32/misc.c new file mode 100644 index 00000000000..650068fa96d --- /dev/null +++ b/reactos/dll/win32/netapi32/misc.c @@ -0,0 +1,115 @@ +/* + * PROJECT: NetAPI DLL + * LICENSE: GPL-2.0 (https://spdx.org/licenses/GPL-2.0) + * PURPOSE: Miscellaneous functions + * COPYRIGHT: Copyright 2017 Eric Kohl (eric.kohl@reactos.org) + */ + +/* INCLUDES ******************************************************************/ + +#include "netapi32.h" + +#include +#include "srvsvc_c.h" +#include "wkssvc_c.h" + + +WINE_DEFAULT_DEBUG_CHANNEL(netapi32); + +/* FUNCTIONS *****************************************************************/ + +NET_API_STATUS +WINAPI +NetStatisticsGet( + _In_ LPWSTR server, + _In_ LPWSTR service, + _In_ DWORD level, + _In_ DWORD options, + _Out_ LPBYTE *bufptr) +{ + NET_API_STATUS status = ERROR_NOT_SUPPORTED; + + TRACE("NetStatisticsGet(%s %s %lu %lu %p)\n", + debugstr_w(server), debugstr_w(service), level, options, bufptr); + + *bufptr = NULL; + + if (_wcsicmp(service, L"LanmanWorkstation") == 0) + { + if (level != 0) + return ERROR_INVALID_LEVEL; + + if (options != 0) + return ERROR_INVALID_PARAMETER; + + RpcTryExcept + { + status = NetrWorkstationStatisticsGet(server, + L"LanmanWorkstation", + level, + options, + (LPSTAT_WORKSTATION_0*)bufptr); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + } + else if (_wcsicmp(service, L"LanmanServer") == 0) + { + if (level != 0) + return ERROR_INVALID_LEVEL; + + if (options != 0) + return ERROR_INVALID_PARAMETER; + + RpcTryExcept + { + status = NetrServerStatisticsGet(server, + L"LanmanServer", + level, + options, + (LPSTAT_SERVER_0 *)bufptr); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + } + + return status; +} + + +NET_API_STATUS +WINAPI +NetpNtStatusToApiStatus( + _In_ NTSTATUS Status) +{ + NET_API_STATUS ApiStatus; + + switch (Status) + { + case STATUS_SUCCESS: + ApiStatus = NERR_Success; + break; + + case STATUS_INVALID_ACCOUNT_NAME: + ApiStatus = NERR_BadUsername; + break; + + case STATUS_PASSWORD_RESTRICTION: + ApiStatus = NERR_PasswordTooShort; + break; + + default: + ApiStatus = RtlNtStatusToDosError(Status); + break; + } + + return ApiStatus; +} + +/* EOF */ diff --git a/reactos/dll/win32/netapi32/netapi32.c b/reactos/dll/win32/netapi32/netapi32.c index 4fba33b6f8a..a2ffcefd524 100644 --- a/reactos/dll/win32/netapi32/netapi32.c +++ b/reactos/dll/win32/netapi32/netapi32.c @@ -101,42 +101,3 @@ NET_API_STATUS WINAPI NetServerGetInfo(LMSTR servername, DWORD level, LPBYTE* bu return ret; } - -/************************************************************ - * NetStatisticsGet (NETAPI32.@) - */ -NET_API_STATUS WINAPI NetStatisticsGet(LMSTR server, LMSTR service, - DWORD level, DWORD options, - LPBYTE *bufptr) -{ - TRACE("(%p, %p, %d, %d, %p)\n", server, service, level, options, bufptr); - return NERR_InternalError; -} - -NET_API_STATUS -WINAPI -NetpNtStatusToApiStatus(NTSTATUS Status) -{ - NET_API_STATUS ApiStatus; - - switch (Status) - { - case STATUS_SUCCESS: - ApiStatus = NERR_Success; - break; - - case STATUS_INVALID_ACCOUNT_NAME: - ApiStatus = NERR_BadUsername; - break; - - case STATUS_PASSWORD_RESTRICTION: - ApiStatus = NERR_PasswordTooShort; - break; - - default: - ApiStatus = RtlNtStatusToDosError(Status); - break; - } - - return ApiStatus; -} -- 2.17.1