[NETAPI32]
authorEric Kohl <eric.kohl@reactos.org>
Tue, 26 Sep 2017 09:03:27 +0000 (09:03 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Tue, 26 Sep 2017 09:03:27 +0000 (09:03 +0000)
Implement NetStatisticsGet() and move NetpNtStatusToApiStatus().

svn path=/trunk/; revision=75972

reactos/dll/win32/netapi32/CMakeLists.txt
reactos/dll/win32/netapi32/misc.c [new file with mode: 0644]
reactos/dll/win32/netapi32/netapi32.c

index be68e22..0339f76 100644 (file)
@@ -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 (file)
index 0000000..650068f
--- /dev/null
@@ -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 */
index 4fba33b..a2ffcef 100644 (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;
-}