https://git.reactos.org/?p=reactos.git;a=commitdiff;h=774a4252b99c05156c35f28bbe812a49c96dc2ca

commit 774a4252b99c05156c35f28bbe812a49c96dc2ca
Author:     Eric Kohl <[email protected]>
AuthorDate: Sun Feb 16 22:07:56 2020 +0100
Commit:     Eric Kohl <[email protected]>
CommitDate: Sun Feb 16 22:08:34 2020 +0100

    [UMPNPMGR] Improve some DPRINTS and PNP_CreateKey
    
    PNP_CreateKey creates the 'Device Parameters' key for a given device in the 
enum key
---
 base/services/umpnpmgr/rpcserver.c | 84 +++++++++++++++++++++++++++-----------
 1 file changed, 61 insertions(+), 23 deletions(-)

diff --git a/base/services/umpnpmgr/rpcserver.c 
b/base/services/umpnpmgr/rpcserver.c
index 269c9cc12cc..4f4131c1b78 100644
--- a/base/services/umpnpmgr/rpcserver.c
+++ b/base/services/umpnpmgr/rpcserver.c
@@ -1526,7 +1526,9 @@ PNP_GetDeviceRegProp(
 
     UNREFERENCED_PARAMETER(hBinding);
 
-    DPRINT("PNP_GetDeviceRegProp() called\n");
+    DPRINT("PNP_GetDeviceRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
+           hBinding, pDeviceID, ulProperty, pulRegDataType, Buffer,
+           pulTransferLen, pulLength, ulFlags);
 
     if (pulTransferLen == NULL || pulLength == NULL)
     {
@@ -1785,12 +1787,9 @@ PNP_SetDeviceRegProp(
     UNREFERENCED_PARAMETER(hBinding);
     UNREFERENCED_PARAMETER(ulFlags);
 
-    DPRINT("PNP_SetDeviceRegProp() called\n");
-
-    DPRINT("DeviceId: %S\n", pDeviceId);
-    DPRINT("Property: %lu\n", ulProperty);
-    DPRINT("DataType: %lu\n", ulDataType);
-    DPRINT("Length: %lu\n", ulLength);
+    DPRINT("PNP_SetDeviceRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
+           hBinding, pDeviceId, ulProperty, ulDataType, Buffer,
+           ulLength, ulFlags);
 
     if (!IsValidDeviceInstanceID(pDeviceId))
         return CR_INVALID_DEVINST;
@@ -2036,24 +2035,58 @@ PNP_CreateKey(
     DWORD samDesired,
     DWORD ulFlags)
 {
-    HKEY hKey = 0;
+    HKEY hDeviceKey = NULL, hParametersKey = NULL;
+    DWORD dwError;
+    CONFIGRET ret = CR_SUCCESS;
 
-    if (RegCreateKeyExW(HKEY_LOCAL_MACHINE,
-                        pszSubKey,
-                        0,
-                        NULL,
-                        0,
-                        KEY_ALL_ACCESS,
-                        NULL,
-                        &hKey,
-                        NULL))
-        return CR_REGISTRY_ERROR;
+    UNREFERENCED_PARAMETER(hBinding);
+    UNREFERENCED_PARAMETER(samDesired);
 
-    /* FIXME: Set security key */
+    DPRINT("PNP_CreateKey(%p %S 0x%lx 0x%08lx)\n",
+           hBinding, pszSubKey, samDesired, ulFlags);
 
-    RegCloseKey(hKey);
+    if (ulFlags != 0)
+        return CR_INVALID_FLAG;
 
-    return CR_SUCCESS;
+    if (!IsValidDeviceInstanceID(pszSubKey))
+        return CR_INVALID_DEVINST;
+
+    dwError = RegOpenKeyExW(hEnumKey,
+                            pszSubKey,
+                            0,
+                            KEY_WRITE,
+                            &hDeviceKey);
+    if (dwError != ERROR_SUCCESS)
+    {
+        ret = CR_INVALID_DEVNODE;
+        goto done;
+    }
+
+    dwError = RegCreateKeyExW(hDeviceKey,
+                              L"Device Parameters",
+                              0,
+                              NULL,
+                              REG_OPTION_NON_VOLATILE,
+                              KEY_ALL_ACCESS,
+                              NULL,
+                              &hParametersKey,
+                              NULL);
+    if (dwError != ERROR_SUCCESS)
+    {
+        ret = CR_REGISTRY_ERROR;
+        goto done;
+    }
+
+    /* FIXME: Set key security */
+
+done:
+    if (hParametersKey != NULL)
+        RegCloseKey(hParametersKey);
+
+    if (hDeviceKey != NULL)
+        RegCloseKey(hDeviceKey);
+
+    return ret;
 }
 
 
@@ -2086,6 +2119,9 @@ PNP_GetClassCount(
     UNREFERENCED_PARAMETER(hBinding);
     UNREFERENCED_PARAMETER(ulFlags);
 
+    DPRINT("PNP_GetClassCount(%p %p 0x%08lx)\n",
+           hBinding, pulClassCount, ulFlags);
+
     dwError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
                             REGSTR_PATH_CLASS,
                             0,
@@ -2132,7 +2168,8 @@ PNP_GetClassName(
     UNREFERENCED_PARAMETER(hBinding);
     UNREFERENCED_PARAMETER(ulFlags);
 
-    DPRINT("PNP_GetClassName() called\n");
+    DPRINT("PNP_GetClassName(%p %S %p %p 0x%08lx)\n",
+           hBinding, pszClassGuid, Buffer, pulLength, ulFlags);
 
     lstrcpyW(szKeyName, L"System\\CurrentControlSet\\Control\\Class\\");
     if (lstrlenW(pszClassGuid) + 1 < 
sizeof(szKeyName)/sizeof(WCHAR)-(lstrlenW(szKeyName) * sizeof(WCHAR)))
@@ -2183,7 +2220,8 @@ PNP_DeleteClassKey(
 
     UNREFERENCED_PARAMETER(hBinding);
 
-    DPRINT("PNP_GetClassName(%S, %lx) called\n", pszClassGuid, ulFlags);
+    DPRINT("PNP_GetClassName(%p %S 0x%08lx)\n",
+           hBinding, pszClassGuid, ulFlags);
 
     if (ulFlags & CM_DELETE_CLASS_SUBKEYS)
     {

Reply via email to