[NETAPI32]

Implement NetStatisticsGet() and move NetpNtStatusToApiStatus().

svn path=/trunk/; revision=75972
This commit is contained in:
Eric Kohl 2017-09-26 09:03:27 +00:00
parent 98789a5ce7
commit b7bb40a33e
3 changed files with 116 additions and 39 deletions

View file

@ -20,6 +20,7 @@ list(APPEND SOURCE
dssetup.c
group.c
local_group.c
misc.c
nbcmdqueue.c
nbnamecache.c
nbt.c

View file

@ -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 <rpc.h>
#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 */

View file

@ -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;
}