55 DPRINT(
"RpcServerThread() called\n");
67 RegisteredProtSeq =
TRUE;
69 DPRINT1(
"RpcServerUseProtseqEpW() failed (Status %lx)\n",
Status);
78 RegisteredProtSeq =
TRUE;
80 DPRINT1(
"RpcServerUseProtseqEpW() failed (Status %lx)\n",
Status);
83 if (RegisteredProtSeq ==
FALSE)
91 DPRINT1(
"RpcServerRegisterIf() failed (Status %lx)\n",
Status);
105 DPRINT1(
"*** Other devices won't be installed correctly. If something\n");
106 DPRINT1(
"*** doesn't work, try to reboot to get a new chance.\n");
108 DPRINT(
"RpcServerThread() done\n");
167 wcscpy(szLocalDeviceInstanceID, pszDeviceInstanceID);
173 lpEnumerator = szLocalDeviceInstanceID;
189 if (lpEnumerator !=
NULL)
190 wcscpy(pszEnumerator, lpEnumerator);
192 if (lpDevice !=
NULL)
193 wcscpy(pszDevice, lpDevice);
195 if (lpInstance !=
NULL)
196 wcscpy(pszInstance, lpInstance);
211 DPRINT1(
"ClearDeviceStatus(%S 0x%lx 0x%lx)\n",
212 pszDeviceID, ulStatus, ulProblem);
221 (
PVOID)&PlugPlayData,
241 DPRINT(
"GetDeviceStatus(%S %p %p)\n",
242 pszDeviceID, pulStatus, pulProblem);
249 (
PVOID)&PlugPlayData,
276 DPRINT1(
"SetDeviceStatus(%S 0x%lx 0x%lx)\n",
277 pszDeviceID, ulStatus, ulProblem);
286 (
PVOID)&PlugPlayData,
307 DPRINT1(
"DisableDeviceInstance(%S %p %p %lu)\n",
308 pszDeviceInstance, pVetoType, pszVetoName, ulNameLength);
313 QueryRemoveData.
Flags = 0;
315 QueryRemoveData.
VetoName = pszVetoName;
327 if (pVetoType !=
NULL)
328 *pVetoType = QueryRemoveData.
VetoType;
346 INT nPartLength[3] = {0, 0, 0};
350 DPRINT(
"IsValidDeviceInstanceID(%S)\n",
351 pszDeviceInstanceID);
353 if (pszDeviceInstanceID ==
NULL)
355 DPRINT(
"Device instance ID is NULL!\n");
359 p = pszDeviceInstanceID;
367 DPRINT(
"Too many separators: %d\n", nParts);
373 nPartLength[nParts]++;
388 DPRINT(
"Invalid number of separtors: %d\n", nParts);
392 if ((nPartLength[0] == 0) ||
393 (nPartLength[1] == 0) ||
394 (nPartLength[2] == 0))
396 DPRINT(
"Invalid part lengths: %d %d %d\n",
397 nPartLength[0], nPartLength[1], nPartLength[2]);
401 DPRINT(
"Valid device instance ID!\n");
424 DWORD ulStatus, ulProblem;
443 wcscpy(szKeyName,
L"System\\CurrentControlSet\\Enum\\");
444 wcscat(szKeyName, pszDeviceID);
455 switch (ulLogConfType)
459 pszSubKeyName =
L"LogConf";
464 pszSubKeyName =
L"Control";
468 DPRINT1(
"Unsupported configuration type!\n");
506 switch (ulLogConfType)
509 pszValueName =
L"BootConfig";
514 pszValueName =
L"AllocConfig";
519 pszValueName =
L"ForcedConfig";
524 pszValueName =
L"FilteredConfigVector";
529 pszValueName =
L"BasicConfigVector";
534 pszValueName =
L"OverrideConfigVector";
539 DPRINT1(
"Unsupported configuration type!\n");
544 if ((ulValueNameBufferSize > 0) && (pszValueNameBuffer !=
NULL) &&
545 (
wcslen(pszValueName) + 1 <= ulValueNameBufferSize))
546 wcscpy(pszValueNameBuffer, pszValueName);
561 if (*ppBuffer ==
NULL)
587 ULONG ulLastIndex = 0;
589 if (pDescriptor ==
NULL)
596 pNext += (pDescriptor->PartialResourceList.Count - 1) *
600 if (pDescriptor->PartialResourceList.Count > 0)
602 ulLastIndex = pDescriptor->PartialResourceList.Count - 1;
604 if (pDescriptor->PartialResourceList.PartialDescriptors[ulLastIndex].Type ==
607 pNext += pDescriptor->PartialResourceList.PartialDescriptors[ulLastIndex].
608 u.DeviceSpecificData.DataSize;
636 DPRINT1(
"AllocateAndInitializeSid failed\n");
644 DPRINT1(
"RpcImpersonateClient failed (Status 0x%08lx)\n", RpcStatus);
671 DPRINT1(
"PNP_NOTIFY_HANDLE_rundown(%p)\n", pHandle);
708 DPRINT(
"PNP_GetVersion(%p %p)\n",
727 DPRINT(
"PNP_GetGlobalState(%p %p 0x%08lx)\n",
750 DPRINT(
"PNP_InitDetection(%p)\n",
770 DPRINT(
"PNP_ReportLogOn(%p %u, %u)\n",
826 DPRINT(
"PNP_ValidateDeviceInstance(%p %S 0x%08lx)\n",
838 DPRINT(
"Could not open the Device Key!\n");
846 if (hDeviceKey !=
NULL)
849 DPRINT(
"PNP_ValidateDeviceInstance() done (returns %lx)\n",
ret);
867 DPRINT(
"PNP_GetRootDeviceInstance(%p %S %lu)\n",
886 DPRINT(
"PNP_GetRootDeviceInstance() done (returns %lx)\n",
ret);
897 DWORD ulRelationship,
910 DPRINT(
"PNP_GetRelatedDeviceInstance(%p %lu %S %p %p 0x%lx)\n",
911 hBinding, ulRelationship, pDeviceID, pRelatedDeviceId,
917 if (ulRelationship == PNP_GET_PARENT_DEVICE_INSTANCE)
937 else if (ulRelationship == PNP_GET_SIBLING_DEVICE_INSTANCE)
947 PlugPlayData.
Relation = ulRelationship;
953 (
PVOID)&PlugPlayData,
960 DPRINT(
"PNP_GetRelatedDeviceInstance() done (returns %lx)\n",
ret);
989 DPRINT(
"PNP_EnumerateSubKeys(%p %lu %lu %p %lu %p 0x%08lx)\n",
991 pulRequiredLen, ulFlags);
995 case PNP_ENUMERATOR_SUBKEYS:
999 case PNP_CLASS_SUBKEYS:
1007 *pulRequiredLen = ulLength;
1022 (*pulRequiredLen)++;
1025 DPRINT(
"PNP_EnumerateSubKeys() done (returns %lx)\n",
ret);
1064 PlugPlayData.
Buffer = pszBuffer;
1067 (
PVOID)&PlugPlayData,
1089 WCHAR szPathBuffer[512];
1092 DWORD dwValues,
dwSize, dwIndex, dwUsedLength, dwPathLength;
1099 L"System\\CurrentControlSet\\Services",
1105 DPRINT(
"Failed to open the services key (Error %lu)\n", dwError);
1116 DPRINT(
"Failed to open the service key (Error %lu)\n", dwError);
1128 DPRINT(
"Failed to open the service enum key (Error %lu)\n", dwError);
1143 DPRINT(
"RegQueryValueExW failed (Error %lu)\n", dwError);
1147 DPRINT(
"dwValues %lu\n", dwValues);
1152 for (dwIndex = 0; dwIndex < dwValues; dwIndex++)
1156 dwSize =
sizeof(szPathBuffer);
1166 DPRINT(
"Path: %S\n", szPathBuffer);
1168 dwPathLength =
wcslen(szPathBuffer) + 1;
1169 if (dwUsedLength + dwPathLength + 1 > *pulLength)
1175 wcscpy(pPtr, szPathBuffer);
1176 dwUsedLength += dwPathLength;
1177 pPtr += dwPathLength;
1186 if (hServiceKey !=
NULL)
1193 *pulLength = dwUsedLength + 1;
1209 WCHAR szPathBuffer[512];
1211 DWORD dwInstanceLength, dwPathLength, dwUsedLength;
1212 DWORD dwIndex, dwError;
1224 DPRINT(
"Failed to open the device key (Error %lu)\n", dwError);
1231 for (dwIndex = 0; ; dwIndex++)
1245 wsprintf(szPathBuffer,
L"%s\\%s", pszDevice, szInstanceBuffer);
1246 DPRINT(
"Path: %S\n", szPathBuffer);
1248 dwPathLength =
wcslen(szPathBuffer) + 1;
1249 if (dwUsedLength + dwPathLength + 1 > *pulLength)
1255 wcscpy(pPtr, szPathBuffer);
1256 dwUsedLength += dwPathLength;
1257 pPtr += dwPathLength;
1265 *pulLength = dwUsedLength + 1;
1280 WCHAR szPathBuffer[512];
1281 HKEY hEnumeratorKey;
1283 DWORD dwIndex, dwDeviceLength, dwUsedLength, dwRemainingLength, dwPathLength;
1295 DPRINT(
"Failed to open the enumerator key (Error %lu)\n", dwError);
1300 dwRemainingLength = *pulLength;
1303 for (dwIndex = 0; ; dwIndex++)
1317 wsprintf(szPathBuffer,
L"%s\\%s", pszEnumerator, szDeviceBuffer);
1318 DPRINT(
"Path: %S\n", szPathBuffer);
1320 dwPathLength = dwRemainingLength;
1327 dwUsedLength += dwPathLength - 1;
1328 dwRemainingLength -= dwPathLength - 1;
1329 pPtr += dwPathLength - 1;
1335 *pulLength = dwUsedLength + 1;
1351 DWORD dwIndex, dwEnumeratorLength, dwUsedLength, dwRemainingLength, dwPathLength;
1356 dwRemainingLength = *pulLength;
1359 for (dwIndex = 0; ; dwIndex++)
1365 &dwEnumeratorLength,
1370 dwPathLength = dwRemainingLength;
1377 dwUsedLength += dwPathLength - 1;
1378 dwRemainingLength -= dwPathLength - 1;
1379 pPtr += dwPathLength - 1;
1383 *pulLength = dwUsedLength + 1;
1406 DPRINT(
"PNP_GetDeviceList(%p %S %p %p 0x%08lx)\n",
1412 if (pulLength ==
NULL)
1416 (pszFilter ==
NULL))
1501 (
PVOID)&PlugPlayData,
1529 L"System\\CurrentControlSet\\Services",
1535 DPRINT(
"Failed to open the services key (Error %lu)\n", dwError);
1546 DPRINT(
"Failed to open the service key (Error %lu)\n", dwError);
1558 DPRINT(
"Failed to open the service enum key (Error %lu)\n", dwError);
1573 DPRINT(
"RegQueryValueExW failed (Error %lu)\n", dwError);
1592 DPRINT(
"RegQueryInfoKeyW failed (Error %lu)\n", dwError);
1596 DPRINT(
"dwValues %lu dwMaxValueLength %lu\n", dwValues, dwMaxValueLength /
sizeof(
WCHAR));
1599 *pulLength = dwValues * dwMaxValueLength /
sizeof(
WCHAR) + 2;
1605 if (hServiceKey !=
NULL)
1622 DWORD dwSubKeys, dwMaxSubKeyLength;
1633 DPRINT(
"Failed to open the device key (Error %lu)\n", dwError);
1652 DPRINT(
"RegQueryInfoKeyW failed (Error %lu)\n", dwError);
1654 dwMaxSubKeyLength = 0;
1661 *pulLength = dwSubKeys * (
wcslen(pszDevice) + 1 + dwMaxSubKeyLength + 1);
1674 WCHAR szPathBuffer[512];
1675 HKEY hEnumeratorKey;
1676 DWORD dwIndex, dwDeviceLength, dwBufferLength;
1690 DPRINT(
"Failed to open the enumerator key (Error %lu)\n", dwError);
1694 for (dwIndex = 0; ; dwIndex++)
1708 wsprintf(szPathBuffer,
L"%s\\%s", pszEnumerator, szDeviceBuffer);
1709 DPRINT(
"Path: %S\n", szPathBuffer);
1718 *pulLength += dwBufferLength;
1734 DWORD dwIndex, dwEnumeratorLength, dwBufferLength;
1738 for (dwIndex = 0; ; dwIndex++)
1744 &dwEnumeratorLength,
1755 *pulLength += dwBufferLength;
1776 DPRINT(
"PNP_GetDeviceListSize(%p %S %p 0x%08lx)\n",
1777 hBinding, pszFilter, pulLength, ulFlags);
1782 if (pulLength ==
NULL)
1786 (pszFilter ==
NULL))
1853 DPRINT(
"PNP_GetDepth(%p %S %p 0x%08lx)\n",
1854 hBinding, pszDeviceID, pulDepth, ulFlags);
1863 (
PVOID)&PlugPlayData,
1867 *pulDepth = PlugPlayData.
Depth;
1874 DPRINT(
"PNP_GetDepth() done (returns %lx)\n",
ret);
1887 DWORD *pulRegDataType,
1902 DPRINT(
"PNP_GetDeviceRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
1904 pulTransferLen, pulLength, ulFlags);
1906 if (pulTransferLen ==
NULL || pulLength ==
NULL)
1925 if (*pulLength < *pulTransferLen)
1926 *pulLength = *pulTransferLen;
1928 *pulTransferLen = 0;
1933 lpValueName =
L"DeviceDesc";
1937 lpValueName =
L"HardwareID";
1941 lpValueName =
L"CompatibleIDs";
1945 lpValueName =
L"Service";
1949 lpValueName =
L"Class";
1953 lpValueName =
L"ClassGUID";
1957 lpValueName =
L"Driver";
1961 lpValueName =
L"ConfigFlags";
1965 lpValueName =
L"Mfg";
1969 lpValueName =
L"FriendlyName";
1973 lpValueName =
L"LocationInformation";
1978 *pulRegDataType =
REG_SZ;
1982 lpValueName =
L"Capabilities";
1990 lpValueName =
L"UpperFilters";
1994 lpValueName =
L"LowerFilters";
2014 *pulRegDataType =
REG_SZ;
2018 lpValueName =
L"Security";
2022 lpValueName =
L"DeviceType";
2026 lpValueName =
L"Exclusive";
2030 lpValueName =
L"DeviceCharacteristics";
2039 lpValueName =
L"UINumberDescFormat";
2058 lpValueName =
L"RemovalPolicy";
2067#if (WINVER >= _WIN32_WINNT_WS03)
2074#if (WINVER >= _WIN32_WINNT_WIN7)
2077 *pulRegDataType =
REG_SZ;
2086 DPRINT(
"Value name: %S\n", lpValueName);
2132 (
PVOID)&PlugPlayData,
2136 *pulLength = PlugPlayData.BufferSize;
2151 DPRINT(
"PNP_GetDeviceRegProp() done (returns %lx)\n",
ret);
2176 DPRINT(
"PNP_SetDeviceRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
2186 lpValueName =
L"DeviceDesc";
2190 lpValueName =
L"HardwareID";
2194 lpValueName =
L"CompatibleIDs";
2198 lpValueName =
L"Service";
2202 lpValueName =
L"Class";
2206 lpValueName =
L"ClassGUID";
2210 lpValueName =
L"Driver";
2214 lpValueName =
L"ConfigFlags";
2218 lpValueName =
L"Mfg";
2222 lpValueName =
L"FriendlyName";
2226 lpValueName =
L"LocationInformation";
2230 lpValueName =
L"UpperFilters";
2234 lpValueName =
L"LowerFilters";
2238 lpValueName =
L"Security";
2242 lpValueName =
L"DeviceType";
2246 lpValueName =
L"Exclusive";
2250 lpValueName =
L"DeviceCharacteristics";
2254 lpValueName =
L"UINumberDescFormat";
2258 lpValueName =
L"RemovalPolicy";
2265 DPRINT(
"Value name: %S\n", lpValueName);
2293 DPRINT(
"PNP_SetDeviceRegProp() done (returns %lx)\n",
ret);
2308 WCHAR szClassGuid[40];
2309 WCHAR szClassInstance[5];
2311 HKEY hClassInstanceKey;
2312 ULONG ulTransferLength, ulDataLength;
2313 DWORD dwDataType, dwDisposition,
i;
2317 DPRINT(
"PNP_GetClassInstance(%p %S %p %lu)\n",
2318 hBinding, pDeviceId, pszClassInstance, ulLength);
2323 ulTransferLength = ulLength;
2328 (
BYTE *)pszClassInstance,
2335 ulTransferLength =
sizeof(szClassGuid);
2336 ulDataLength =
sizeof(szClassGuid);
2341 (
BYTE *)szClassGuid,
2347 DPRINT1(
"PNP_GetDeviceRegProp() failed (Error %lu)\n",
ret);
2358 DPRINT1(
"RegOpenKeyExW() failed (Error %lu)\n", dwError);
2363 for (
i = 0;
i < 10000;
i++)
2387 ulDataLength = (
wcslen(pszClassInstance) + 1) *
sizeof(
WCHAR);
2392 (
BYTE *)pszClassInstance,
2397 DPRINT1(
"PNP_SetDeviceRegProp() failed (Error %lu)\n",
ret);
2408 if (hDeviceClassKey !=
NULL)
2431 DPRINT(
"PNP_CreateKey(%p %S 0x%lx 0x%08lx)\n",
2432 hBinding, pszSubKey, samDesired, ulFlags);
2452 L"Device Parameters",
2469 if (hParametersKey !=
NULL)
2472 if (hDeviceKey !=
NULL)
2499 DWORD *pulClassCount,
2508 DPRINT(
"PNP_GetClassCount(%p %p 0x%08lx)\n",
2557 DPRINT(
"PNP_GetClassName(%p %S %p %p 0x%08lx)\n",
2560 lstrcpyW(szKeyName,
L"System\\CurrentControlSet\\Control\\Class\\");
2591 DPRINT(
"PNP_GetClassName() done (returns %lx)\n",
ret);
2609 DPRINT(
"PNP_DeleteClassKey(%p %S 0x%08lx)\n",
2623 DPRINT(
"PNP_DeleteClassKey() done (returns %lx)\n",
ret);
2634 LPWSTR pszInterfaceDevice,
2635 GUID *AliasInterfaceGuid,
2636 LPWSTR pszAliasInterfaceDevice,
2663 DPRINT(
"PNP_GetInterfaceDeviceList(%p %p %S %p %p 0x%08lx)\n",
2672 PlugPlayData.
Flags = ulFlags;
2678 (
PVOID)&PlugPlayData,
2689 DPRINT(
"PNP_GetInterfaceDeviceList() done (returns %lx)\n",
ret);
2710 DPRINT(
"PNP_GetInterfaceDeviceListSize(%p %p %p %S 0x%08lx)\n",
2722 PlugPlayData.
Flags = ulFlags;
2725 (
PVOID)&PlugPlayData,
2736 DPRINT(
"PNP_GetInterfaceDeviceListSize() done (returns %lx)\n",
ret);
2764 LPWSTR pszInterfaceDevice,
2779 DWORD *pulRegDataType,
2793 DPRINT(
"PNP_GetClassRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
2794 hBinding, pszClassGuid, ulProperty, pulRegDataType,
2795 Buffer, pulTransferLen, pulLength, ulFlags);
2797 if (pulTransferLen ==
NULL || pulLength ==
NULL)
2809 if (*pulLength < *pulTransferLen)
2810 *pulLength = *pulTransferLen;
2812 *pulTransferLen = 0;
2817 lpValueName =
L"Security";
2821 lpValueName =
L"DeviceType";
2825 lpValueName =
L"Exclusive";
2829 lpValueName =
L"DeviceCharacteristics";
2837 DPRINT(
"Value name: %S\n", lpValueName);
2884 *pulTransferLen = *pulLength;
2886 if (hPropKey !=
NULL)
2889 if (hInstKey !=
NULL)
2892 DPRINT(
"PNP_GetClassRegProp() done (returns %lx)\n",
ret);
2918 DPRINT(
"PNP_SetClassRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
2919 hBinding, pszClassGuid, ulProperty, ulDataType,
2920 Buffer, ulLength, ulFlags);
2928 lpValueName =
L"Security";
2932 lpValueName =
L"DeviceType";
2936 lpValueName =
L"Exclusive";
2940 lpValueName =
L"DeviceCharacteristics";
2992 if (hPropKey !=
NULL)
2995 if (hInstKey !=
NULL)
3011 HKEY hKeyEnumerator;
3065 DPRINT1(
"Instance %S already exists!\n", szInstance);
3092 DWORD dwPhantomValue = 1;
3097 (
PBYTE)&dwPhantomValue,
3098 sizeof(dwPhantomValue));
3130 DWORD dwInstanceNumber;
3139 dwInstanceNumber = 0;
3142 if (dwInstanceNumber >= 10000)
3145 swprintf(szGeneratedInstance,
L"Root\\%ls\\%04lu",
3146 pszDeviceID, dwInstanceNumber);
3158 if (
wcslen(szGeneratedInstance) > ulLength)
3164 wcscpy(pszDeviceID, szGeneratedInstance);
3177 LPWSTR pszParentDeviceID,
3187 DPRINT(
"PNP_CreateDevInst(%p %S %S %lu 0x%08lx)\n",
3188 hBinding, pszParentDeviceID, pszDeviceID, ulLength, ulFlags);
3193 if (pszDeviceID ==
NULL || pszParentDeviceID ==
NULL)
3246 sizeof(ControlData));
3269 DPRINT(
"PNP_CreateDevInst() done (returns %lx)\n",
ret);
3283 DWORD ulStatus, ulProblem;
3288 DPRINT1(
"SetupDeviceInstance(%S 0x%08lx)\n",
3289 pszDeviceInstance, ulMinorAction);
3309 dwSize =
sizeof(dwDisableCount);
3317 (dwDisableCount > 0))
3351 if (hDeviceKey !=
NULL)
3366 DPRINT(
"Enable device instance %S\n", pszDeviceInstance);
3386 DPRINT1(
"ReenumerateDeviceInstance(%S 0x%08lx)\n",
3387 pszDeviceInstance, ulMinorAction);
3394 DPRINT1(
"CM_REENUMERATE_RETRY_INSTALLATION not implemented!\n");
3399 EnumerateDeviceData.
Flags = 0;
3402 &EnumerateDeviceData,
3416 DWORD ulMajorAction,
3417 DWORD ulMinorAction,
3418 LPWSTR pszDeviceInstance1,
3419 LPWSTR pszDeviceInstance2)
3425 DPRINT(
"PNP_DeviceInstanceAction(%p %lu 0x%08lx %S %S)\n",
3426 hBinding, ulMajorAction, ulMinorAction,
3427 pszDeviceInstance1, pszDeviceInstance2);
3429 switch (ulMajorAction)
3431 case PNP_DEVINST_SETUP:
3436 case PNP_DEVINST_ENABLE:
3440 case PNP_DEVINST_REENUMERATE:
3446 DPRINT1(
"Unknown device action %lu: not implemented\n", ulMajorAction);
3450 DPRINT(
"PNP_DeviceInstanceAction() done (returns %lx)\n",
ret);
3466 DWORD ulDataType, ulTransferLength, ulLength;
3467 DWORD ulCapabilities, ulConfigFlags;
3473 DPRINT(
"PNP_GetDeviceStatus(%p %S %p %p 0x%08lx)\n",
3474 hBinding, pDeviceID, pulStatus, pulProblem, ulFlags);
3479 if ((pulStatus ==
NULL) || (pulProblem ==
NULL))
3490 ulTransferLength =
sizeof(ulCapabilities);
3491 ulLength =
sizeof(ulCapabilities);
3496 (
PBYTE)&ulCapabilities,
3507 ulTransferLength =
sizeof(ulConfigFlags);
3508 ulLength =
sizeof(ulConfigFlags);
3513 (
PBYTE)&ulConfigFlags,
3543 ULONG ulOldStatus, ulOldProblem;
3548 DPRINT1(
"PNP_SetDeviceProblem(%p %S %lu 0x%08lx)\n",
3549 hBinding, pDeviceID, ulProblem, ulFlags);
3564 (ulOldProblem != 0) &&
3565 (ulOldProblem != ulProblem))
3600 DPRINT1(
"PNP_DisableDevInst(%p %S %p %p %lu 0x%08lx)\n",
3601 hBinding, pDeviceID, pVetoType, pszVetoName, ulNameLength, ulFlags);
3637 lpPtr = lpDeviceIdList;
3641 if (0 ==
_wcsicmp(lpPtr, lpDeviceId))
3659 dwLen =
wcslen(lpDeviceId);
3660 dwPos = (*lpDeviceIdListSize /
sizeof(
WCHAR)) - 1;
3662 wcscpy(&lpDeviceIdList[dwPos], lpDeviceId);
3664 dwPos += (dwLen + 1);
3666 lpDeviceIdList[dwPos] = 0;
3668 *lpDeviceIdListSize = dwPos *
sizeof(
WCHAR);
3684 DWORD dwDeviceIdListSize;
3685 DWORD dwNewDeviceIdSize;
3690 DPRINT(
"PNP_AddID(%p %S %S 0x%08lx)\n",
3691 hBinding, pszDeviceID, pszID, ulFlags);
3699 DPRINT(
"Failed to open the device key!\n");
3712 DPRINT(
"Failed to query the desired ID string!\n");
3717 dwNewDeviceIdSize =
lstrlenW(pszDeviceID);
3718 if (!dwNewDeviceIdSize)
3724 dwDeviceIdListSize += (dwNewDeviceIdSize + 2) *
sizeof(
WCHAR);
3727 if (!pszDeviceIdList)
3729 DPRINT(
"Failed to allocate memory for the desired ID string!\n");
3741 DPRINT(
"Failed to query the desired ID string!\n");
3749 DPRINT(
"Device ID was found in the ID string!\n");
3764 DPRINT(
"Failed to set the desired ID string!\n");
3770 if (pszDeviceIdList)
3773 DPRINT(
"PNP_AddID() done (returns %lx)\n",
ret);
3787 DPRINT(
"PNP_RegisterDriver(%p %S 0x%lx)\n",
3817 DPRINT1(
"PNP_QueryRemove(%p %S %p %p %lu 0x%lx)\n",
3818 hBinding, pszDeviceID, pVetoType, pszVetoName,
3819 ulNameLength, ulFlags);
3828 if (pVetoType !=
NULL)
3831 if (pszVetoName !=
NULL && ulNameLength > 0)
3837 PlugPlayData.
VetoName = pszVetoName;
3843 sizeof(PlugPlayData));
3866 DPRINT1(
"PNP_RequestDeviceEject(%p %S %p %p %lu 0x%lx)\n",
3867 hBinding, pszDeviceID, pVetoType, pszVetoName,
3868 ulNameLength, ulFlags);
3876 if (pVetoType !=
NULL)
3879 if (pszVetoName !=
NULL && ulNameLength > 0)
3885 PlugPlayData.
VetoName = pszVetoName;
3891 sizeof(PlugPlayData));
3914 DPRINT1(
"PNP_IsDockStationPresent(%p %p)\n",
3943 else if (dwValue != 0)
3949 DPRINT1(
"PNP_IsDockStationPresent() done (returns %lx)\n",
ret);
3979 szDockDeviceInstance,
4009 DPRINT(
"PNP_HwProfFlags() called\n");
4017 L"System\\CurrentControlSet\\HardwareProfiles\\Current\\System\\CurrentControlSet\\Enum");
4022 L"System\\CurrentControlSet\\HardwareProfiles\\%04lu\\System\\CurrentControlSet\\Enum",
4033 if (ulAction == PNP_GET_HWPROFFLAGS)
4059 else if (ulAction == PNP_SET_HWPROFFLAGS)
4078 DWORD ulProfileInfoSize,
4081 WCHAR szProfileName[5];
4085 DWORD dwDisposition;
4092 DPRINT(
"PNP_GetHwProfInfo() called\n");
4094 if (ulProfileInfoSize == 0)
4113 L"System\\CurrentControlSet\\Control\\IDConfigDB",
4129 L"Hardware Profiles",
4143 if (ulIndex == (
ULONG)-1)
4193 if (hKeyProfile !=
NULL)
4196 if (hKeyProfiles !=
NULL)
4199 if (hKeyConfig !=
NULL)
4213 DWORD *pulLogConfTag,
4217 DWORD RegDataType = 0;
4218 ULONG ulDataSize = 0, ulNewSize = 0;
4223 DPRINT(
"PNP_AddEmptyLogConf(%p %S %lu %p 0x%08lx)\n",
4224 hBinding, pDeviceID, ulPriority, pulLogConfTag, ulFlags);
4226 if (pulLogConfTag ==
NULL)
4242 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4267 if (pDataBuffer ==
NULL)
4274 pResourceList->
Count = 1;
4290 if (pDataBuffer ==
NULL)
4297 pRequirementsList->
ListSize = ulDataSize;
4306 pResourceList->
Count = 1;
4331 ulDataSize + ulNewSize);
4332 if (pDataBuffer ==
NULL)
4342 for (ulIndex = 0; ulIndex < pResourceList->
Count; ulIndex++)
4346 pResourceList->
Count++;
4353 *pulLogConfTag = ulIndex;
4379 if (pDataBuffer !=
NULL)
4382 if (hConfigKey !=
NULL)
4385 DPRINT(
"PNP_AddEmptyLogConf() returns %lu\n",
ret);
4397 DWORD ulLogConfType,
4402 DWORD RegDataType = 0;
4403 ULONG ulDataSize = 0;
4408 DPRINT(
"PNP_FreeLogConf(%p %S %lu %lu 0x%08lx)\n",
4409 hBinding, pDeviceID, ulLogConfType, ulLogConfTag, ulFlags);
4422 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4445 DPRINT(
"Delete value %S\n", szValueNameBuffer);
4458 DPRINT(
"Delete value %S\n", szValueNameBuffer);
4473 if (pDataBuffer !=
NULL)
4476 if (hConfigKey !=
NULL)
4479 DPRINT(
"PNP_FreeLogConf() returns %lu\n",
ret);
4491 DWORD ulLogConfType,
4492 DWORD *pulLogConfTag,
4496 DWORD RegDataType = 0;
4497 ULONG ulDataSize = 0;
4501 DPRINT(
"PNP_GetFirstLogConf(%p %S %lu %p 0x%08lx)\n",
4502 hBinding, pDeviceID, ulLogConfType, pulLogConfTag, ulFlags);
4504 if (pulLogConfTag ==
NULL)
4507 *pulLogConfTag = (
DWORD)0;
4520 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4534 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4539 DPRINT1(
"Data size %lu\n", ulDataSize);
4540 if (ulDataSize == 0 || lpData ==
NULL)
4542 DPRINT1(
"No config data available!\n");
4555 DPRINT1(
"No resource descriptors!\n");
4562 DPRINT(
"REG_RESOURCE_REQUIREMENTS_LIST->AlternativeLists %lu\n",
4577 if (hConfigKey !=
NULL)
4580 DPRINT(
"PNP_GetFirstLogConf() returns %lu\n",
ret);
4592 DWORD ulLogConfType,
4598 DWORD RegDataType = 0;
4599 ULONG ulDataSize = 0;
4603 DPRINT(
"PNP_GetNextLogConf(%p %S %lu %ul %p 0x%08lx)\n",
4604 hBinding, pDeviceID, ulLogConfType, ulCurrentTag, pulNextTag, ulFlags);
4606 if (pulNextTag ==
NULL)
4609 *pulNextTag = (
DWORD)0;
4622 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4636 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4641 DPRINT(
"Data size %lu\n", ulDataSize);
4643 if (ulDataSize == 0 || lpData ==
NULL)
4645 DPRINT1(
"No config data available!\n");
4671 DPRINT(
"REG_RESOURCE_REQUIREMENTS_LIST->AlternativeLists %lu\n",
4690 *pulNextTag = ulCurrentTag + 1;
4696 if (hConfigKey !=
NULL)
4699 DPRINT(
"PNP_GetNextLogConf() returns %lu\n",
ret);
4728 DWORD ulLogConfType,
4730 DWORD *pulResourceTag,
4747 DWORD ulLogConfType,
4749 DWORD ulResourceTag,
4750 DWORD *pulPreviousResType,
4751 DWORD *pulPreviousResTag,
4766 DWORD ulLogConfType,
4768 DWORD ulResourceTag,
4769 DWORD *pulNextResType,
4770 DWORD *pulNextResTag,
4774 DWORD RegDataType = 0;
4775 ULONG ulDataSize = 0;
4779 DPRINT1(
"PNP_GetNextResDes(%p %S 0x%lx %lu %lu %ul %p %p 0x%08lx)\n",
4780 hBinding, pDeviceID, ulLogConfTag, ulLogConfType, ResourceID,
4781 ulResourceTag, pulNextResType, pulNextResTag, ulFlags);
4783 if (pulNextResType ==
NULL)
4786 *pulNextResType = 0;
4799 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4813 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4818 DPRINT1(
"Data size %lu\n", ulDataSize);
4820 if (ulDataSize == 0 || lpData ==
NULL)
4822 DPRINT1(
"No config data available!\n");
4830 DPRINT1(
"FIXME: REG_RESOURCE_LIST\n");
4837 DPRINT1(
"FIXME: REG_RESOURCE_REQUIREMENTS_LIST\n");
4847 if (hConfigKey !=
NULL)
4850 DPRINT1(
"PNP_GetNextResDes() returns %lu\n",
ret);
4863 DWORD ulLogConfType,
4865 DWORD ulResourceTag,
4882 DWORD ulLogConfType,
4884 DWORD ulResourceTag,
4900 DWORD ulLogConfType,
4903 DWORD ulResourceTag,
4922 BOOL *pbConflictDetected,
4925 DPRINT(
"PNP_DetectResourceConflict()\n");
4927 if (pbConflictDetected !=
NULL)
4928 *pbConflictDetected =
FALSE;
4957 DWORD ulHardwareProfile,
5014 BYTE *pNotificationFilter,
5015 DWORD ulNotificationFilterSize,
5026 DPRINT1(
"PNP_RegisterNotification(%p %p '%S' %p %lu 0x%lx %p %lx %p)\n",
5027 hBinding, hRecipient, pszName, pNotificationFilter,
5028 ulNotificationFilterSize, ulFlags, pNotifyHandle, ulProcessId, pulUnknown9);
5030 if (pNotifyHandle ==
NULL)
5033 *pNotifyHandle =
NULL;
5035 if (pNotificationFilter ==
NULL ||
5036 pulUnknown9 ==
NULL)
5048 DPRINT1(
"DBT_DEVTYP_DEVICEINTERFACE\n");
5056 if (pNotifyData ==
NULL)
5064 if (pszName !=
NULL)
5078 if ((ulFlags & DEVICE_NOTIFY_SERVICE_HANDLE) == DEVICE_NOTIFY_WINDOW_HANDLE)
5084 DPRINT(
"Validate service: %S\n", pszName);
5089 DPRINT1(
"I_ScValidatePnpService failed!\n");
5097 pNotifyData->
ulFlags = ulFlags;
5099 if ((ulFlags & DEVICE_NOTIFY_ALL_INTERFACE_CLASSES) == 0)
5111 DPRINT(
"pNotifyData: %p\n", pNotifyData);
5116 DPRINT1(
"DBT_DEVTYP_HANDLE\n");
5126 if (ulFlags & DEVICE_NOTIFY_ALL_INTERFACE_CLASSES)
5165 DPRINT1(
"PNP_UnregisterNotification(%p %p)\n",
5179 *pNotifyHandle =
NULL;
5192 DWORD *pulRegDataType,
5205 DPRINT(
"PNP_GetCustomDevProp() called\n");
5207 if (pulTransferLen ==
NULL || pulLength ==
NULL)
5222 if (*pulLength < *pulTransferLen)
5223 *pulLength = *pulTransferLen;
5225 *pulTransferLen = 0;
5239 L"Device Parameters",
5270 *pulTransferLen = *pulLength;
5272 if (hParamKey !=
NULL)
5275 if (hDeviceKey !=
NULL)
5278 DPRINT(
"PNP_GetCustomDevProp() done (returns %lx)\n",
ret);
5318 DWORD *pulSSDIFlags,
5323 DPRINT1(
"PNP_GetServerSideDeviceInstallFlags(%p %p %lu)\n",
5326 if (pulSSDIFlags ==
NULL)
5346 LPWSTR PropertyCultureName,
5364 LPWSTR PropertyCultureName,
5384 LPWSTR PropertyCultureName,
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
UINT32 void void ** ReturnValue
#define LOGCONF_NAME_BUFFER_SIZE
struct NOTIFY_ENTRY * PNOTIFY_ENTRY
DWORD WINAPI PNP_RegisterServiceNotification(handle_t hBinding)
DWORD WINAPI PNP_GetVersion(handle_t hBinding, WORD *pVersion)
DWORD WINAPI PNP_GetInterfaceDeviceList(handle_t hBinding, GUID *InterfaceGuid, LPWSTR pszDeviceID, BYTE *Buffer, PNP_RPC_BUFFER_SIZE *pulLength, DWORD ulFlags)
DWORD WINAPI PNP_SetHwProf(handle_t hBinding, DWORD ulHardwareProfile, DWORD ulFlags)
DWORD WINAPI PNP_UnregisterNotification(handle_t hBinding, PNP_NOTIFY_HANDLE *pNotifyHandle)
static CONFIGRET GetDeviceInstanceListSize(_In_ LPCWSTR pszDevice, _Out_ PULONG pulLength)
DWORD WINAPI PNP_InstallDevInst(handle_t hBinding)
DWORD WINAPI PNP_DriverStoreDeleteDriverPackage(handle_t hBinding)
static CONFIGRET GetServiceInstanceListSize(_In_ PWSTR pszService, _Out_ PDWORD pulLength)
DWORD WINAPI PNP_QueryResConfList(handle_t hBinding, LPWSTR pDeviceID, RESOURCEID ResourceID, BYTE *ResourceData, PNP_RPC_BUFFER_SIZE ResourceLen, BYTE *Buffer, PNP_RPC_BUFFER_SIZE BufferLen, DWORD ulFlags)
DWORD WINAPI PNP_Connect(handle_t hBinding)
DWORD WINAPI PNP_GetRelatedDeviceInstance(handle_t hBinding, DWORD ulRelationship, LPWSTR pDeviceID, LPWSTR pRelatedDeviceId, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
DWORD WINAPI PNP_EnumerateSubKeys(handle_t hBinding, DWORD ulBranch, DWORD ulIndex, LPWSTR Buffer, PNP_RPC_STRING_LEN ulLength, PNP_RPC_STRING_LEN *pulRequiredLen, DWORD ulFlags)
DWORD WINAPI PNP_SetActiveService(handle_t hBinding, LPWSTR pszFilter, DWORD ulFlags)
DWORD WINAPI PNP_UnregisterDeviceClassAssociation(handle_t hBinding, LPWSTR pszInterfaceDevice, DWORD ulFlags)
DWORD WINAPI PNP_DetectResourceConflict(handle_t hBinding, LPWSTR pDeviceID, RESOURCEID ResourceID, BYTE *ResourceData, PNP_RPC_BUFFER_SIZE ResourceLen, BOOL *pbConflictDetected, DWORD ulFlags)
static CONFIGRET WINAPI NtStatusToCrError(NTSTATUS Status)
DWORD WINAPI PNP_GetDeviceListSize(handle_t hBinding, LPWSTR pszFilter, PNP_RPC_BUFFER_SIZE *pulLength, DWORD ulFlags)
DWORD WINAPI PNP_InitDetection(handle_t hBinding)
DWORD WINAPI PNP_AddEmptyLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulPriority, DWORD *pulLogConfTag, DWORD ulFlags)
DWORD WINAPI PNP_ApplyPowerSettings(handle_t hBinding)
DWORD WINAPI PNP_GetClassCount(handle_t hBinding, DWORD *pulClassCount, DWORD ulFlags)
DWORD WINAPI PNP_GetClassRegProp(handle_t hBinding, LPWSTR pszClassGuid, DWORD ulProperty, DWORD *pulRegDataType, BYTE *Buffer, PNP_RPC_STRING_LEN *pulTransferLen, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
DWORD WINAPI PNP_GetServerSideDeviceInstallFlags(handle_t hBinding, DWORD *pulSSDIFlags, DWORD ulFlags)
DWORD WINAPI PNP_FreeLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD ulLogConfTag, DWORD ulFlags)
LIST_ENTRY NotificationListHead
DWORD WINAPI PNP_GetDeviceRegProp(handle_t hBinding, LPWSTR pDeviceID, DWORD ulProperty, DWORD *pulRegDataType, BYTE *Buffer, PNP_PROP_SIZE *pulTransferLen, PNP_PROP_SIZE *pulLength, DWORD ulFlags)
DWORD WINAPI PNP_GetBlockedDriverInfo(handle_t hBinding, BYTE *Buffer, PNP_RPC_BUFFER_SIZE *pulTransferLen, PNP_RPC_BUFFER_SIZE *pulLength, DWORD ulFlags)
DWORD WINAPI PNP_GetInterfaceDeviceListSize(handle_t hBinding, PNP_RPC_BUFFER_SIZE *pulLen, GUID *InterfaceGuid, LPWSTR pszDeviceID, DWORD ulFlags)
static WCHAR szRootDeviceInstanceID[]
DWORD WINAPI PNP_UninstallDevInst(handle_t hBinding, LPWSTR pDeviceID, DWORD ulFlags)
static VOID AppendDeviceId(LPWSTR lpDeviceIdList, LPDWORD lpDeviceIdListSize, LPWSTR lpDeviceId)
DWORD WINAPI PNP_GetDeviceStatus(handle_t hBinding, LPWSTR pDeviceID, DWORD *pulStatus, DWORD *pulProblem, DWORD ulFlags)
DWORD WINAPI PNP_GetClassInstance(handle_t hBinding, LPWSTR pDeviceId, LPWSTR pszClassInstance, PNP_RPC_STRING_LEN ulLength)
static BOOL CheckForDeviceId(LPWSTR lpDeviceIdList, LPWSTR lpDeviceId)
DWORD WINAPI PNP_DeviceInstanceAction(handle_t hBinding, DWORD ulMajorAction, DWORD ulMinorAction, LPWSTR pszDeviceInstance1, LPWSTR pszDeviceInstance2)
static CONFIGRET GetAllInstanceListSize(_Out_ PULONG pulLength)
VOID __RPC_USER PNP_NOTIFY_HANDLE_rundown(PNP_NOTIFY_HANDLE pHandle)
DWORD WINAPI PNP_RegisterDriver(handle_t hBinding, LPWSTR pszDeviceID, DWORD ulFlags)
static CONFIGRET GenerateDeviceID(_Inout_ LPWSTR pszDeviceID, _In_ PNP_RPC_STRING_LEN ulLength)
DWORD WINAPI PNP_GetDepth(handle_t hBinding, LPWSTR pszDeviceID, DWORD *pulDepth, DWORD ulFlags)
DWORD WINAPI PNP_HwProfFlags(handle_t hBinding, DWORD ulAction, LPWSTR pDeviceID, DWORD ulConfig, DWORD *pulValue, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
static CONFIGRET SetDeviceStatus(_In_ LPWSTR pszDeviceID, _In_ DWORD ulStatus, _In_ DWORD ulProblem)
DWORD WINAPI PNP_DisableDevInst(handle_t hBinding, LPWSTR pDeviceID, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
static CONFIGRET OpenConfigurationKey(_In_ LPCWSTR pszDeviceID, _In_ DWORD ulLogConfType, _Out_ PHKEY phKey)
DWORD WINAPI PNP_GetClassName(handle_t hBinding, LPWSTR pszClassGuid, LPWSTR Buffer, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
RTL_RESOURCE NotificationListLock
DWORD WINAPI PNP_RequestDeviceEject(handle_t hBinding, LPWSTR pszDeviceID, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
DWORD WINAPI PNP_GetObjectProp(handle_t hBinding, LPWSTR ObjectName, DWORD ObjectType, LPWSTR PropertyCultureName, const DEVPROPKEY *PropertyKey, DEVPROPTYPE *PropertyType, PNP_PROP_SIZE *PropertySize, PNP_PROP_SIZE *TransferLen, BYTE *PropertyBuffer, DWORD Flags)
DWORD WINAPI PNP_GetLogConfPriority(handle_t hBinding, LPWSTR pDeviceID, DWORD ulType, DWORD ulTag, DWORD *pPriority, DWORD ulFlags)
static CONFIGRET SetupDeviceInstance(_In_ LPWSTR pszDeviceInstance, _In_ DWORD ulMinorAction)
DWORD WINAPI PNP_GetObjectPropKeys(handle_t hBinding, LPWSTR ObjectName, DWORD ObjectType, LPWSTR PropertyCultureName, PNP_PROP_COUNT *PropertyCount, PNP_PROP_COUNT *TransferLen, DEVPROPKEY *PropertyKeys, DWORD Flags)
DWORD WINAPI PNP_GetInterfaceDeviceAlias(handle_t hBinding, LPWSTR pszInterfaceDevice, GUID *AliasInterfaceGuid, LPWSTR pszAliasInterfaceDevice, PNP_RPC_STRING_LEN *pulLength, PNP_RPC_STRING_LEN *pulTransferLen, DWORD ulFlags)
static PCM_FULL_RESOURCE_DESCRIPTOR NextResourceDescriptor(_In_ PCM_FULL_RESOURCE_DESCRIPTOR pDescriptor)
static CONFIGRET GetDeviceStatus(_In_ LPWSTR pszDeviceID, _Out_ DWORD *pulStatus, _Out_ DWORD *pulProblem)
DWORD WINAPI RpcServerThread(LPVOID lpParameter)
static CONFIGRET GetDeviceInstanceList(_In_ PWSTR pszDevice, _Inout_ PWSTR pszBuffer, _Inout_ PDWORD pulLength)
CONFIGRET GetEnumeratorInstanceList(_In_ PWSTR pszEnumerator, _Inout_ PWSTR pszBuffer, _Inout_ PDWORD pulLength)
static CONFIGRET ClearDeviceStatus(_In_ LPWSTR pszDeviceID, _In_ DWORD ulStatus, _In_ DWORD ulProblem)
DWORD WINAPI PNP_RequestEjectPC(handle_t hBinding)
DWORD WINAPI PNP_DeleteServiceDevices(handle_t hBinding)
DWORD WINAPI PNP_CreateDevInst(handle_t hBinding, LPWSTR pszDeviceID, LPWSTR pszParentDeviceID, PNP_RPC_STRING_LEN ulLength, DWORD ulFlags)
static CONFIGRET GetRelationsInstanceList(_In_ PWSTR pszDevice, _In_ DWORD ulFlags, _Inout_ PWSTR pszBuffer, _Inout_ PDWORD pulLength)
DWORD WINAPI PNP_SetDeviceRegProp(handle_t hBinding, LPWSTR pDeviceId, DWORD ulProperty, DWORD ulDataType, BYTE *Buffer, PNP_PROP_SIZE ulLength, DWORD ulFlags)
static CONFIGRET GetAllInstanceList(_Inout_ PWSTR pszBuffer, _Inout_ PDWORD pulLength)
DWORD WINAPI PNP_AddID(handle_t hBinding, LPWSTR pszDeviceID, LPWSTR pszID, DWORD ulFlags)
DWORD WINAPI PNP_QueryRemove(handle_t hBinding, LPWSTR pszDeviceID, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
DWORD WINAPI PNP_GetFirstLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD *pulLogConfTag, DWORD ulFlags)
static BOOL IsPresentDeviceInstanceID(_In_ LPWSTR pszDeviceInstanceID)
DWORD WINAPI PNP_SetClassRegProp(handle_t hBinding, LPWSTR pszClassGuid, DWORD ulProperty, DWORD ulDataType, BYTE *Buffer, PNP_PROP_SIZE ulLength, DWORD ulFlags)
static VOID SplitDeviceInstanceID(IN LPWSTR pszDeviceInstanceID, OUT LPWSTR pszEnumerator, OUT LPWSTR pszDevice, OUT LPWSTR pszInstance)
DWORD WINAPI PNP_GetNextLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD ulCurrentTag, DWORD *pulNextTag, DWORD ulFlags)
DWORD WINAPI PNP_GetGlobalState(handle_t hBinding, DWORD *pulState, DWORD ulFlags)
CONFIGRET WINAPI PNP_IsDockStationPresent(handle_t hBinding, BOOL *Present)
DWORD WINAPI PNP_RegisterNotification(handle_t hBinding, DWORD_PTR hRecipient, LPWSTR pszName, BYTE *pNotificationFilter, DWORD ulNotificationFilterSize, DWORD ulFlags, PNP_NOTIFY_HANDLE *pNotifyHandle, DWORD ulProcessId, DWORD *pulUnknown9)
DWORD WINAPI PNP_GetHwProfInfo(handle_t hBinding, DWORD ulIndex, HWPROFILEINFO *pHWProfileInfo, DWORD ulProfileInfoSize, DWORD ulFlags)
DWORD WINAPI PNP_FreeResDes(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD ulResourceTag, DWORD *pulPreviousResType, DWORD *pulPreviousResTag, DWORD ulFlags)
DWORD WINAPI PNP_AddResDes(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD *pulResourceTag, BYTE *ResourceData, PNP_RPC_BUFFER_SIZE ResourceLen, DWORD ulFlags)
DWORD WINAPI PNP_SetDeviceProblem(handle_t hBinding, LPWSTR pDeviceID, DWORD ulProblem, DWORD ulFlags)
CONFIGRET WINAPI PNP_RunDetection(handle_t hBinding, DWORD ulFlags)
static CONFIGRET ReenumerateDeviceInstance(_In_ LPWSTR pszDeviceInstance, _In_ ULONG ulMinorAction)
static CONFIGRET GetServiceInstanceList(_In_ PWSTR pszService, _Inout_ PWSTR pszBuffer, _Inout_ PDWORD pulLength)
DWORD WINAPI PNP_CreateKey(handle_t hBinding, LPWSTR pszSubKey, DWORD samDesired, DWORD ulFlags)
DWORD WINAPI PNP_GetResDesDataSize(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD ulResourceTag, DWORD *pulSize, DWORD ulFlags)
DWORD WINAPI PNP_GetRootDeviceInstance(handle_t hBinding, LPWSTR pDeviceID, PNP_RPC_STRING_LEN ulLength)
DWORD WINAPI PNP_GetDeviceList(handle_t hBinding, LPWSTR pszFilter, LPWSTR Buffer, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
DWORD WINAPI PNP_SetObjectProp(handle_t hBinding, LPWSTR ObjectName, DWORD ObjectType, LPWSTR PropertyCultureName, const DEVPROPKEY *PropertyKey, DEVPROPTYPE PropertyType, PNP_PROP_SIZE PropertySize, BYTE *PropertyBuffer, DWORD Flags)
static BOOL IsCallerInteractive(_In_ handle_t hBinding)
static CONFIGRET GetRelationsInstanceListSize(_In_ PWSTR pszDevice, _In_ DWORD ulFlags, _Inout_ PDWORD pulLength)
static CONFIGRET EnableDeviceInstance(_In_ LPWSTR pszDeviceInstance)
DWORD WINAPI PNP_GetCustomDevProp(handle_t hBinding, LPWSTR pDeviceID, LPWSTR CustomPropName, DWORD *pulRegDataType, BYTE *Buffer, PNP_RPC_STRING_LEN *pulTransferLen, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
DWORD WINAPI PNP_DeleteRegistryKey(handle_t hBinding, LPWSTR pszDeviceID, LPWSTR pszParentKey, LPWSTR pszChildKey, DWORD ulFlags)
DWORD WINAPI PNP_Disconnect(handle_t hBinding)
DWORD WINAPI PNP_QueryArbitratorFreeData(handle_t hBinding, BYTE *pData, DWORD DataLen, LPWSTR pDeviceID, RESOURCEID ResourceID, DWORD ulFlags)
static CONFIGRET DisableDeviceInstance(_In_ LPWSTR pszDeviceInstance, _Inout_opt_ PPNP_VETO_TYPE pVetoType, _Inout_opt_ LPWSTR pszVetoName, _In_ DWORD ulNameLength)
DWORD WINAPI PNP_ReportLogOn(handle_t hBinding, BOOL Admin, DWORD ProcessId)
static BOOL IsRootDeviceInstanceID(_In_ PWSTR pszDeviceInstanceID)
DWORD WINAPI PNP_GetNextResDes(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD ulResourceTag, DWORD *pulNextResType, DWORD *pulNextResTag, DWORD ulFlags)
DWORD WINAPI PNP_GetResDesData(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD ulResourceTag, BYTE *Buffer, PNP_RPC_BUFFER_SIZE BufferLen, DWORD ulFlags)
static CONFIGRET GetConfigurationData(_In_ HKEY hKey, _In_ ULONG ulLogConfType, _Out_ PULONG pulRegDataType, _Out_ PULONG pulDataSize, _Out_ LPBYTE *ppBuffer, _In_ ULONG ulValueNameBufferSize, _Out_opt_ LPWSTR pszValueNameBuffer)
DWORD WINAPI PNP_ValidateDeviceInstance(handle_t hBinding, LPWSTR pDeviceID, DWORD ulFlags)
DWORD WINAPI PNP_ModifyResDes(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID CurrentResourceID, RESOURCEID NewResourceID, DWORD ulResourceTag, BYTE *ResourceData, PNP_RPC_BUFFER_SIZE ResourceLen, DWORD ulFlags)
DWORD WINAPI PNP_QueryArbitratorFreeSize(handle_t hBinding, DWORD *pulSize, LPWSTR pDeviceID, RESOURCEID ResourceID, DWORD ulFlags)
static CONFIGRET GetEnumeratorInstanceListSize(_In_ LPCWSTR pszEnumerator, _Out_ PULONG pulLength)
DWORD WINAPI PNP_DriverStoreAddDriverPackage(handle_t hBinding)
DWORD WINAPI PNP_DeleteClassKey(handle_t hBinding, LPWSTR pszClassGuid, DWORD ulFlags)
static BOOL IsValidDeviceInstanceID(_In_ PWSTR pszDeviceInstanceID)
DWORD WINAPI PNP_GetVersionInternal(handle_t hBinding, WORD *pwVersion)
static CONFIGRET CreateDeviceInstance(_In_ LPWSTR pszDeviceID, _In_ BOOL bPhantomDevice)
DWORD WINAPI PNP_RegisterDeviceClassAssociation(handle_t hBinding, LPWSTR pszDeviceID, GUID *InterfaceGuid, LPWSTR pszReference, LPWSTR pszSymLink, PNP_RPC_STRING_LEN *pulLength, PNP_RPC_STRING_LEN *pulTransferLen, DWORD ulFlags)
static HANDLE hServicesKey
static SID_IDENTIFIER_AUTHORITY NtAuthority
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define RegCloseKey(hKey)
#define CM_PROB_FAILED_INSTALL
enum _PNP_VETO_TYPE * PPNP_VETO_TYPE
#define CM_REGISTER_DEVICE_DRIVER_BITS
#define CM_DRP_LOCATION_INFORMATION
#define CM_DRP_CONFIGFLAGS
#define CR_INVALID_PROPERTY
#define FILTERED_LOG_CONF
#define CM_SETUP_DOWNLOAD
#define CM_CUSTOMDEVPROP_BITS
#define CM_DRP_REMOVAL_POLICY
#define CM_DRP_ENUMERATOR_NAME
#define CM_ADD_ID_COMPATIBLE
#define CM_DRP_REMOVAL_POLICY_HW_DEFAULT
#define CR_INVALID_DEVICE_ID
#define CM_DRP_BUSTYPEGUID
#define CR_NO_MORE_LOG_CONF
#define CR_INVALID_LOG_CONF
#define CM_GETIDLIST_FILTER_BITS
#define CM_DRP_LOWERFILTERS
#define CM_SET_DEVNODE_PROBLEM_BITS
#define CR_NO_SUCH_DEVINST
#define CM_GETIDLIST_FILTER_REMOVALRELATIONS
#define CM_DRP_LOCATION_PATHS
#define CM_DRP_REMOVAL_POLICY_OVERRIDE
#define CM_DRP_CAPABILITIES
#define CM_DRP_UPPERFILTERS
#define CM_SETUP_WRITE_LOG_CONFS
#define CM_DRP_COMPATIBLEIDS
#define CR_INVALID_DEVINST
#define CM_DRP_DEVICEDESC
#define CM_REENUMERATE_BITS
#define CM_GETIDLIST_FILTER_EJECTRELATIONS
#define CM_REENUMERATE_RETRY_INSTALLATION
#define CM_DRP_LEGACYBUSTYPE
#define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME
#define CM_SET_DEVNODE_PROBLEM_OVERRIDE
#define CM_DELETE_CLASS_SUBKEYS
#define CM_GLOBAL_STATE_SERVICES_AVAILABLE
#define CM_GETIDLIST_FILTER_ENUMERATOR
#define CR_ALREADY_SUCH_DEVINST
#define CM_GLOBAL_STATE_CAN_DO_UI
#define CM_GETIDLIST_FILTER_BUSRELATIONS
#define CM_DRP_FRIENDLYNAME
#define CM_DRP_INSTALL_STATE
#define OVERRIDE_LOG_CONF
#define CM_DRP_CHARACTERISTICS
#define CR_NO_SUCH_DEVNODE
#define CM_CREATE_DEVNODE_BITS
#define CM_DRP_BASE_CONTAINERID
#define CM_GETIDLIST_FILTER_POWERRELATIONS
#define CR_CALL_NOT_IMPLEMENTED
#define CM_DEVCAP_REMOVABLE
#define CM_CREATE_DEVNODE_GENERATE_ID
#define CM_DRP_UI_NUMBER_DESC_FORMAT
#define CR_INVALID_POINTER
#define CM_GETIDLIST_FILTER_SERVICE
#define CM_CRP_CHARACTERISTICS
#define CM_CREATE_DEVNODE_PHANTOM
#define CM_GLOBAL_STATE_SHUTTING_DOWN
#define CM_GETIDLIST_FILTER_NONE
#define CM_DRP_DEVICE_POWER_DATA
#define CM_DRP_HARDWAREID
#define CR_NO_SUCH_REGISTRY_KEY
#define CR_INVALID_DEVNODE
#define CR_REGISTRY_ERROR
#define STATUS_NOT_IMPLEMENTED
#define DBT_DEVTYP_HANDLE
struct _DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE_W
struct _DEV_BROADCAST_HANDLE DEV_BROADCAST_HANDLE
#define DBT_DEVTYP_DEVICEINTERFACE
struct _DEV_BROADCAST_HANDLE * PDEV_BROADCAST_HANDLE
struct _DEV_BROADCAST_DEVICEINTERFACE_W * PDEV_BROADCAST_DEVICEINTERFACE_W
#define MAX_DEVICE_ID_LEN
#define NT_SUCCESS(StatCode)
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI CheckTokenMembership(IN HANDLE ExistingTokenHandle, IN PSID SidToCheck, OUT PBOOL IsMember)
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid)
BOOL WINAPI OpenThreadToken(HANDLE ThreadHandle, DWORD DesiredAccess, BOOL OpenAsSelf, HANDLE *TokenHandle)
PVOID WINAPI FreeSid(PSID pSid)
#define ERROR_NO_MORE_ITEMS
#define HeapFree(x, y, z)
static DWORD DWORD * dwLength
static void cleanup(void)
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
DWORD WINAPI SHDeleteKeyW(HKEY hKey, LPCWSTR lpszSubKey)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define InitializeListHead(ListHead)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
_In_ WDFDEVICE _In_ PWDF_DEVICE_INTERFACE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG _Out_ PDEVPROPTYPE PropertyType
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
struct _CM_FULL_RESOURCE_DESCRIPTOR CM_FULL_RESOURCE_DESCRIPTOR
struct _CM_FULL_RESOURCE_DESCRIPTOR * PCM_FULL_RESOURCE_DESCRIPTOR
struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
#define CmResourceTypeConfigData
struct _CM_RESOURCE_LIST * PCM_RESOURCE_LIST
#define CmResourceTypeDeviceSpecific
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
_In_ BOOL _In_ HANDLE hProcess
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define SE_LOAD_DRIVER_PRIVILEGE
#define PNP_PROPERTY_UI_NUMBER
#define PNP_SET_DEVICE_STATUS
#define PNP_PROPERTY_REMOVAL_POLICY
#define PNP_PROPERTY_POWER_DATA
#define PNP_PROPERTY_ENUMERATOR_NAME
#define PNP_PROPERTY_PHYSICAL_DEVICE_OBJECT_NAME
@ PlugPlayControlEnumerateDevice
@ PlugPlayControlProperty
@ PlugPlayControlQueryDeviceRelations
@ PlugPlayControlGetRelatedDevice
@ PlugPlayControlDeviceStatus
@ PlugPlayControlQueryAndRemoveDevice
@ PlugPlayControlGetDeviceDepth
@ PlugPlayControlInitializeDevice
@ PlugPlayControlGetInterfaceDeviceList
@ PlugPlayControlStartDevice
@ PlugPlayControlRetrieveDock
#define PNP_PROPERTY_INSTALL_STATE
#define PNP_PROPERTY_LOCATION_PATHS
#define PNP_PROPERTY_REMOVAL_POLICY_HARDWARE_DEFAULT
#define PNP_CLEAR_DEVICE_STATUS
#define PNP_PROPERTY_LEGACYBUSTYPE
#define PNP_GET_DEVICE_STATUS
#define PNP_PROPERTY_BUSTYPEGUID
#define PNP_PROPERTY_ADDRESS
#define PNP_PROPERTY_BUSNUMBER
#define PNP_PROPERTY_CONTAINERID
NTSYSAPI VOID NTAPI RtlInitializeResource(_In_ PRTL_RESOURCE Resource)
NTSYSAPI BOOLEAN NTAPI RtlAcquireResourceExclusive(_In_ PRTL_RESOURCE Resource, _In_ BOOLEAN Wait)
NTSYSAPI VOID NTAPI RtlReleaseResource(_In_ PRTL_RESOURCE Resource)
#define PROCESS_ALL_ACCESS
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define KEY_CREATE_SUB_KEY
#define REG_OPTION_NON_VOLATILE
#define REG_CREATED_NEW_KEY
#define REG_RESOURCE_LIST
#define KEY_ENUMERATE_SUB_KEYS
#define REG_RESOURCE_REQUIREMENTS_LIST
#define UNREFERENCED_PARAMETER(P)
#define STATUS_PLUGPLAY_QUERY_VETOED
NTSTATUS NTAPI NtPlugPlayControl(IN PLUGPLAY_CONTROL_CLASS PlugPlayControlClass, IN OUT PVOID Buffer, IN ULONG BufferLength)
unsigned long PNP_PROP_COUNT
unsigned long PNP_RPC_BUFFER_SIZE
unsigned long PNP_RPC_STRING_LEN
unsigned long PNP_PROP_SIZE
static const WCHAR szName[]
#define CONFIGFLAG_MANUAL_INSTALL
#define CONFIGFLAG_FAILEDINSTALL
#define REGSTR_PATH_CLASS
RPC_STATUS WINAPI RpcRevertToSelf(void)
RPC_STATUS WINAPI RpcImpersonateClient(RPC_BINDING_HANDLE BindingHandle)
RPC_STATUS WINAPI RpcServerListen(UINT MinimumCallThreads, UINT MaxCalls, UINT DontWait)
RPC_STATUS WINAPI RpcServerRegisterIf(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv)
RPC_STATUS WINAPI RpcServerUseProtseqEpW(RPC_WSTR Protseq, UINT MaxCalls, RPC_WSTR Endpoint, LPVOID SecurityDescriptor)
DWORD WINAPI I_ScValidatePnpService(_In_ LPCWSTR pszMachineName, _In_ LPCWSTR pszServiceName, _Out_ SERVICE_STATUS_HANDLE *phServiceStatus)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define midl_user_allocate
#define STATUS_BUFFER_TOO_SMALL
CHAR HWPI_szFriendlyName[MAX_PROFILE_LEN]
CM_PARTIAL_RESOURCE_LIST PartialResourceList
INTERFACE_TYPE InterfaceType
CM_FULL_RESOURCE_DESCRIPTOR List[1]
union _IO_RESOURCE_DESCRIPTOR::@2140 u
struct _IO_RESOURCE_DESCRIPTOR::@2140::@2148 ConfigData
IO_RESOURCE_DESCRIPTOR Descriptors[1]
INTERFACE_TYPE InterfaceType
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
ULONG DeviceInstanceLength
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define RtlZeroMemory(Destination, Length)
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_NO_SUCH_DEVICE
#define STATUS_OBJECT_NAME_NOT_FOUND
_In_z_ PCWSTR _In_ ULONG ulType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID PropertyBuffer
DWORD WINAPI GetLastError(void)
HANDLE WINAPI GetCurrentThread(void)
_In_ ULONG _In_ ULONG ulTag
_Check_return_ _Out_ PULONG pulSize
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_CONFIG
static const GUID InterfaceGuid
_Must_inspect_result_ _In_ ULONG Flags
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName
_In_ CONST DEVPROPKEY * PropertyKey
struct _IO_RESOURCE_LIST * PIO_RESOURCE_LIST
#define IO_RESOURCE_PREFERRED
struct _IO_RESOURCE_REQUIREMENTS_LIST * PIO_RESOURCE_REQUIREMENTS_LIST
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
#define SECURITY_INTERACTIVE_RID
#define SECURITY_NT_AUTHORITY
#define TOKEN_ASSIGN_PRIMARY