https://git.reactos.org/?p=reactos.git;a=commitdiff;h=774a4252b99c05156c35f…
commit 774a4252b99c05156c35f28bbe812a49c96dc2ca
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Sun Feb 16 22:07:56 2020 +0100
Commit: Eric Kohl <eric.kohl(a)reactos.org>
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)
{