52 DPRINT(
"RpcServerThread() called\n");
61 RegisteredProtSeq =
TRUE;
63 DPRINT1(
"RpcServerUseProtseqEpW() failed (Status %lx)\n",
Status);
72 RegisteredProtSeq =
TRUE;
74 DPRINT1(
"RpcServerUseProtseqEpW() failed (Status %lx)\n",
Status);
77 if (RegisteredProtSeq ==
FALSE)
85 DPRINT1(
"RpcServerRegisterIf() failed (Status %lx)\n",
Status);
99 DPRINT1(
"*** Other devices won't be installed correctly. If something\n");
100 DPRINT1(
"*** doesn't work, try to reboot to get a new chance.\n");
102 DPRINT(
"RpcServerThread() done\n");
161 wcscpy(szLocalDeviceInstanceID, pszDeviceInstanceID);
167 lpEnumerator = szLocalDeviceInstanceID;
183 if (lpEnumerator !=
NULL)
184 wcscpy(pszEnumerator, lpEnumerator);
186 if (lpDevice !=
NULL)
187 wcscpy(pszDevice, lpDevice);
189 if (lpInstance !=
NULL)
190 wcscpy(pszInstance, lpInstance);
205 DPRINT1(
"ClearDeviceStatus(%S 0x%lx 0x%lx)\n",
206 pszDeviceID, ulStatus, ulProblem);
215 (
PVOID)&PlugPlayData,
235 DPRINT(
"GetDeviceStatus(%S %p %p)\n",
236 pszDeviceID, pulStatus, pulProblem);
243 (
PVOID)&PlugPlayData,
247 *pulStatus = PlugPlayData.DeviceStatus;
248 *pulProblem = PlugPlayData.DeviceProblem;
270 DPRINT1(
"SetDeviceStatus(%S 0x%lx 0x%lx)\n",
271 pszDeviceID, ulStatus, ulProblem);
280 (
PVOID)&PlugPlayData,
301 DPRINT1(
"DisableDeviceInstance(%S %p %p %lu)\n",
302 pszDeviceInstance, pVetoType, pszVetoName, ulNameLength);
307 QueryRemoveData.
Flags = 0;
309 QueryRemoveData.
VetoName = pszVetoName;
321 if (pVetoType !=
NULL)
322 *pVetoType = QueryRemoveData.
VetoType;
340 INT nPartLength[3] = {0, 0, 0};
344 DPRINT(
"IsValidDeviceInstanceID(%S)\n",
345 pszDeviceInstanceID);
347 if (pszDeviceInstanceID ==
NULL)
349 DPRINT(
"Device instance ID is NULL!\n");
353 p = pszDeviceInstanceID;
361 DPRINT(
"Too many separators: %d\n", nParts);
367 nPartLength[nParts]++;
382 DPRINT(
"Invalid number of separtors: %d\n", nParts);
386 if ((nPartLength[0] == 0) ||
387 (nPartLength[1] == 0) ||
388 (nPartLength[2] == 0))
390 DPRINT(
"Invalid part lengths: %d %d %d\n",
391 nPartLength[0], nPartLength[1], nPartLength[2]);
395 DPRINT(
"Valid device instance ID!\n");
424 wcscpy(szKeyName,
L"System\\CurrentControlSet\\Enum\\");
425 wcscat(szKeyName, pszDeviceID);
468 switch (ulLogConfType)
471 pszValueName =
L"BootConfig";
476 pszValueName =
L"AllocConfig";
481 pszValueName =
L"ForcedConfig";
486 pszValueName =
L"FilteredConfigVector";
491 pszValueName =
L"BasicConfigVector";
496 pszValueName =
L"OverrideConfigVector";
501 DPRINT1(
"Unsupported configuration type!\n");
518 if (*ppBuffer ==
NULL)
571 DPRINT(
"PNP_GetVersion(%p %p)\n",
591 DPRINT(
"PNP_GetGlobalState(%p %p 0x%08lx)\n",
608 DPRINT(
"PNP_InitDetection(%p)\n",
629 DPRINT(
"PNP_ReportLogOn(%p %u, %u)\n",
681 DPRINT(
"PNP_ValidateDeviceInstance(%p %S 0x%08lx)\n",
693 DPRINT(
"Could not open the Device Key!\n");
701 if (hDeviceKey !=
NULL)
704 DPRINT(
"PNP_ValidateDeviceInstance() done (returns %lx)\n",
ret);
722 DPRINT(
"PNP_GetRootDeviceInstance(%p %S %lu)\n",
741 DPRINT(
"PNP_GetRootDeviceInstance() done (returns %lx)\n",
ret);
752 DWORD ulRelationship,
765 DPRINT(
"PNP_GetRelatedDeviceInstance(%p %lu %S %p %p 0x%lx)\n",
766 hBinding, ulRelationship, pDeviceID, pRelatedDeviceId,
775 PlugPlayData.
Relation = ulRelationship;
781 (
PVOID)&PlugPlayData,
788 DPRINT(
"PNP_GetRelatedDeviceInstance() done (returns %lx)\n",
ret);
791 DPRINT(
"RelatedDevice: %wZ\n", &PlugPlayData.RelatedDeviceInstance);
817 DPRINT(
"PNP_EnumerateSubKeys(%p %lu %lu %p %lu %p 0x%08lx)\n",
819 pulRequiredLen, ulFlags);
823 case PNP_ENUMERATOR_SUBKEYS:
827 case PNP_CLASS_SUBKEYS:
835 *pulRequiredLen = ulLength;
853 DPRINT(
"PNP_EnumerateSubKeys() done (returns %lx)\n",
ret);
892 PlugPlayData.
Buffer = pszBuffer;
895 (
PVOID)&PlugPlayData,
899 *pulLength = PlugPlayData.BufferSize /
sizeof(
WCHAR);
917 WCHAR szPathBuffer[512];
920 DWORD dwValues,
dwSize, dwIndex, dwUsedLength, dwPathLength;
927 L"System\\CurrentControlSet\\Services",
933 DPRINT(
"Failed to open the services key (Error %lu)\n", dwError);
944 DPRINT(
"Failed to open the service key (Error %lu)\n", dwError);
956 DPRINT(
"Failed to open the service enum key (Error %lu)\n", dwError);
971 DPRINT(
"RegQueryValueExW failed (Error %lu)\n", dwError);
975 DPRINT(
"dwValues %lu\n", dwValues);
980 for (dwIndex = 0; dwIndex < dwValues; dwIndex++)
984 dwSize =
sizeof(szPathBuffer);
994 DPRINT(
"Path: %S\n", szPathBuffer);
996 dwPathLength =
wcslen(szPathBuffer) + 1;
997 if (dwUsedLength + dwPathLength + 1 > *pulLength)
1003 wcscpy(pPtr, szPathBuffer);
1004 dwUsedLength += dwPathLength;
1005 pPtr += dwPathLength;
1014 if (hServiceKey !=
NULL)
1021 *pulLength = dwUsedLength + 1;
1037 WCHAR szPathBuffer[512];
1039 DWORD dwInstanceLength, dwPathLength, dwUsedLength;
1040 DWORD dwIndex, dwError;
1052 DPRINT(
"Failed to open the device key (Error %lu)\n", dwError);
1059 for (dwIndex = 0; ; dwIndex++)
1073 wsprintf(szPathBuffer,
L"%s\\%s", pszDevice, szInstanceBuffer);
1074 DPRINT(
"Path: %S\n", szPathBuffer);
1076 dwPathLength =
wcslen(szPathBuffer) + 1;
1077 if (dwUsedLength + dwPathLength + 1 > *pulLength)
1083 wcscpy(pPtr, szPathBuffer);
1084 dwUsedLength += dwPathLength;
1085 pPtr += dwPathLength;
1093 *pulLength = dwUsedLength + 1;
1108 WCHAR szPathBuffer[512];
1109 HKEY hEnumeratorKey;
1111 DWORD dwIndex, dwDeviceLength, dwUsedLength, dwRemainingLength, dwPathLength;
1123 DPRINT(
"Failed to open the enumerator key (Error %lu)\n", dwError);
1128 dwRemainingLength = *pulLength;
1131 for (dwIndex = 0; ; dwIndex++)
1145 wsprintf(szPathBuffer,
L"%s\\%s", pszEnumerator, szDeviceBuffer);
1146 DPRINT(
"Path: %S\n", szPathBuffer);
1148 dwPathLength = dwRemainingLength;
1155 dwUsedLength += dwPathLength - 1;
1156 dwRemainingLength -= dwPathLength - 1;
1157 pPtr += dwPathLength - 1;
1163 *pulLength = dwUsedLength + 1;
1179 DWORD dwIndex, dwEnumeratorLength, dwUsedLength, dwRemainingLength, dwPathLength;
1184 dwRemainingLength = *pulLength;
1187 for (dwIndex = 0; ; dwIndex++)
1193 &dwEnumeratorLength,
1198 dwPathLength = dwRemainingLength;
1205 dwUsedLength += dwPathLength - 1;
1206 dwRemainingLength -= dwPathLength - 1;
1207 pPtr += dwPathLength - 1;
1211 *pulLength = dwUsedLength + 1;
1234 DPRINT(
"PNP_GetDeviceList(%p %S %p %p 0x%08lx)\n",
1240 if (pulLength ==
NULL)
1244 (pszFilter ==
NULL))
1329 (
PVOID)&PlugPlayData,
1333 *pulLength = PlugPlayData.BufferSize /
sizeof(
WCHAR);
1357 L"System\\CurrentControlSet\\Services",
1363 DPRINT(
"Failed to open the services key (Error %lu)\n", dwError);
1374 DPRINT(
"Failed to open the service key (Error %lu)\n", dwError);
1386 DPRINT(
"Failed to open the service enum key (Error %lu)\n", dwError);
1401 DPRINT(
"RegQueryValueExW failed (Error %lu)\n", dwError);
1420 DPRINT(
"RegQueryInfoKeyW failed (Error %lu)\n", dwError);
1424 DPRINT(
"dwValues %lu dwMaxValueLength %lu\n", dwValues, dwMaxValueLength /
sizeof(
WCHAR));
1427 *pulLength = dwValues * dwMaxValueLength /
sizeof(
WCHAR) + 2;
1433 if (hServiceKey !=
NULL)
1450 DWORD dwSubKeys, dwMaxSubKeyLength;
1461 DPRINT(
"Failed to open the device key (Error %lu)\n", dwError);
1480 DPRINT(
"RegQueryInfoKeyW failed (Error %lu)\n", dwError);
1482 dwMaxSubKeyLength = 0;
1489 *pulLength = dwSubKeys * (
wcslen(pszDevice) + 1 + dwMaxSubKeyLength + 1);
1502 WCHAR szPathBuffer[512];
1503 HKEY hEnumeratorKey;
1504 DWORD dwIndex, dwDeviceLength, dwBufferLength;
1518 DPRINT(
"Failed to open the enumerator key (Error %lu)\n", dwError);
1522 for (dwIndex = 0; ; dwIndex++)
1536 wsprintf(szPathBuffer,
L"%s\\%s", pszEnumerator, szDeviceBuffer);
1537 DPRINT(
"Path: %S\n", szPathBuffer);
1546 *pulLength += dwBufferLength;
1562 DWORD dwIndex, dwEnumeratorLength, dwBufferLength;
1566 for (dwIndex = 0; ; dwIndex++)
1572 &dwEnumeratorLength,
1583 *pulLength += dwBufferLength;
1604 DPRINT(
"PNP_GetDeviceListSize(%p %S %p 0x%08lx)\n",
1605 hBinding, pszFilter, pulLength, ulFlags);
1610 if (pulLength ==
NULL)
1614 (pszFilter ==
NULL))
1681 DPRINT(
"PNP_GetDepth(%p %S %p 0x%08lx)\n",
1682 hBinding, pszDeviceID, pulDepth, ulFlags);
1691 (
PVOID)&PlugPlayData,
1695 *pulDepth = PlugPlayData.Depth;
1702 DPRINT(
"PNP_GetDepth() done (returns %lx)\n",
ret);
1715 DWORD *pulRegDataType,
1730 DPRINT(
"PNP_GetDeviceRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
1732 pulTransferLen, pulLength, ulFlags);
1734 if (pulTransferLen ==
NULL || pulLength ==
NULL)
1753 if (*pulLength < *pulTransferLen)
1754 *pulLength = *pulTransferLen;
1756 *pulTransferLen = 0;
1761 lpValueName =
L"DeviceDesc";
1765 lpValueName =
L"HardwareID";
1769 lpValueName =
L"CompatibleIDs";
1773 lpValueName =
L"Service";
1777 lpValueName =
L"Class";
1781 lpValueName =
L"ClassGUID";
1785 lpValueName =
L"Driver";
1789 lpValueName =
L"ConfigFlags";
1793 lpValueName =
L"Mfg";
1797 lpValueName =
L"FriendlyName";
1801 lpValueName =
L"LocationInformation";
1806 *pulRegDataType =
REG_SZ;
1810 lpValueName =
L"Capabilities";
1818 lpValueName =
L"UpperFilters";
1822 lpValueName =
L"LowerFilters";
1842 *pulRegDataType =
REG_SZ;
1846 lpValueName =
L"Security";
1850 lpValueName =
L"DeviceType";
1854 lpValueName =
L"Exclusive";
1858 lpValueName =
L"DeviceCharacteristics";
1867 lpValueName =
L"UINumberDescFormat";
1886 lpValueName =
L"RemovalPolicy";
1895 #if (WINVER >= _WIN32_WINNT_WS03) 1902 #if (WINVER >= _WIN32_WINNT_WIN7) 1905 *pulRegDataType =
REG_SZ;
1914 DPRINT(
"Value name: %S\n", lpValueName);
1960 (
PVOID)&PlugPlayData,
1964 *pulLength = PlugPlayData.BufferSize;
1979 DPRINT(
"PNP_GetDeviceRegProp() done (returns %lx)\n",
ret);
2004 DPRINT(
"PNP_SetDeviceRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
2014 lpValueName =
L"DeviceDesc";
2018 lpValueName =
L"HardwareID";
2022 lpValueName =
L"CompatibleIDs";
2026 lpValueName =
L"Service";
2030 lpValueName =
L"Class";
2034 lpValueName =
L"ClassGUID";
2038 lpValueName =
L"Driver";
2042 lpValueName =
L"ConfigFlags";
2046 lpValueName =
L"Mfg";
2050 lpValueName =
L"FriendlyName";
2054 lpValueName =
L"LocationInformation";
2058 lpValueName =
L"UpperFilters";
2062 lpValueName =
L"LowerFilters";
2066 lpValueName =
L"Security";
2070 lpValueName =
L"DeviceType";
2074 lpValueName =
L"Exclusive";
2078 lpValueName =
L"DeviceCharacteristics";
2082 lpValueName =
L"UINumberDescFormat";
2086 lpValueName =
L"RemovalPolicy";
2093 DPRINT(
"Value name: %S\n", lpValueName);
2121 DPRINT(
"PNP_SetDeviceRegProp() done (returns %lx)\n",
ret);
2136 WCHAR szClassGuid[40];
2137 WCHAR szClassInstance[5];
2139 HKEY hClassInstanceKey;
2140 ULONG ulTransferLength, ulDataLength;
2141 DWORD dwDataType, dwDisposition,
i;
2145 DPRINT(
"PNP_GetClassInstance(%p %S %p %lu)\n",
2146 hBinding, pDeviceId, pszClassInstance, ulLength);
2151 ulTransferLength = ulLength;
2156 (
BYTE *)pszClassInstance,
2163 ulTransferLength =
sizeof(szClassGuid);
2164 ulDataLength =
sizeof(szClassGuid);
2169 (
BYTE *)szClassGuid,
2175 DPRINT1(
"PNP_GetDeviceRegProp() failed (Error %lu)\n",
ret);
2186 DPRINT1(
"RegOpenKeyExW() failed (Error %lu)\n", dwError);
2191 for (
i = 0;
i < 10000;
i++)
2215 ulDataLength = (
wcslen(pszClassInstance) + 1) *
sizeof(
WCHAR);
2220 (
BYTE *)pszClassInstance,
2225 DPRINT1(
"PNP_SetDeviceRegProp() failed (Error %lu)\n",
ret);
2236 if (hDeviceClassKey !=
NULL)
2259 DPRINT(
"PNP_CreateKey(%p %S 0x%lx 0x%08lx)\n",
2260 hBinding, pszSubKey, samDesired, ulFlags);
2280 L"Device Parameters",
2297 if (hParametersKey !=
NULL)
2300 if (hDeviceKey !=
NULL)
2327 DWORD *pulClassCount,
2336 DPRINT(
"PNP_GetClassCount(%p %p 0x%08lx)\n",
2385 DPRINT(
"PNP_GetClassName(%p %S %p %p 0x%08lx)\n",
2388 lstrcpyW(szKeyName,
L"System\\CurrentControlSet\\Control\\Class\\");
2419 DPRINT(
"PNP_GetClassName() done (returns %lx)\n",
ret);
2437 DPRINT(
"PNP_DeleteClassKey(%p %S 0x%08lx)\n",
2451 DPRINT(
"PNP_DeleteClassKey() done (returns %lx)\n",
ret);
2462 LPWSTR pszInterfaceDevice,
2463 GUID *AliasInterfaceGuid,
2464 LPWSTR pszAliasInterfaceDevice,
2491 DPRINT(
"PNP_GetInterfaceDeviceList(%p %p %S %p %p 0x%08lx)\n",
2500 PlugPlayData.
Flags = ulFlags;
2506 (
PVOID)&PlugPlayData,
2510 *pulLength = PlugPlayData.BufferSize;
2517 DPRINT(
"PNP_GetInterfaceDeviceList() done (returns %lx)\n",
ret);
2538 DPRINT(
"PNP_GetInterfaceDeviceListSize(%p %p %p %S 0x%08lx)\n",
2550 PlugPlayData.
Flags = ulFlags;
2553 (
PVOID)&PlugPlayData,
2557 *pulLen = PlugPlayData.BufferSize;
2564 DPRINT(
"PNP_GetInterfaceDeviceListSize() done (returns %lx)\n",
ret);
2592 LPWSTR pszInterfaceDevice,
2607 DWORD *pulRegDataType,
2621 DPRINT(
"PNP_GetClassRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
2622 hBinding, pszClassGuid, ulProperty, pulRegDataType,
2623 Buffer, pulTransferLen, pulLength, ulFlags);
2625 if (pulTransferLen ==
NULL || pulLength ==
NULL)
2637 if (*pulLength < *pulTransferLen)
2638 *pulLength = *pulTransferLen;
2640 *pulTransferLen = 0;
2645 lpValueName =
L"Security";
2649 lpValueName =
L"DeviceType";
2653 lpValueName =
L"Exclusive";
2657 lpValueName =
L"DeviceCharacteristics";
2665 DPRINT(
"Value name: %S\n", lpValueName);
2712 *pulTransferLen = *pulLength;
2714 if (hPropKey !=
NULL)
2717 if (hInstKey !=
NULL)
2720 DPRINT(
"PNP_GetClassRegProp() done (returns %lx)\n",
ret);
2746 DPRINT(
"PNP_SetClassRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
2747 hBinding, pszClassGuid, ulProperty, ulDataType,
2748 Buffer, ulLength, ulFlags);
2756 lpValueName =
L"Security";
2760 lpValueName =
L"DeviceType";
2764 lpValueName =
L"Exclusive";
2768 lpValueName =
L"DeviceCharacteristics";
2820 if (hPropKey !=
NULL)
2823 if (hInstKey !=
NULL)
2836 HKEY hKeyEnumerator;
2890 DPRINT1(
"Instance %S already exists!\n", szInstance);
2942 LPWSTR pszParentDeviceID,
2948 DPRINT(
"PNP_CreateDevInst(%p %S %S %lu 0x%08lx)\n",
2949 hBinding, pszParentDeviceID, pszDeviceID, ulLength, ulFlags);
2954 if (pszDeviceID ==
NULL || pszParentDeviceID ==
NULL)
2964 DWORD dwInstanceNumber;
2967 dwInstanceNumber = 0;
2970 swprintf(szGeneratedInstance,
L"Root\\%ls\\%04lu",
2971 pszDeviceID, dwInstanceNumber);
2983 if (
wcslen(szGeneratedInstance) > ulLength)
2989 wcscpy(pszDeviceID, szGeneratedInstance);
2999 DPRINT(
"PNP_CreateDevInst() done (returns %lx)\n",
ret);
3012 DWORD ulStatus, ulProblem;
3016 DPRINT1(
"SetupDeviceInstance(%S 0x%08lx)\n",
3017 pszDeviceInstance, ulMinorAction);
3037 dwSize =
sizeof(dwDisableCount);
3045 (dwDisableCount > 0))
3073 if (hDeviceKey !=
NULL)
3088 DPRINT(
"Enable device instance %S\n", pszDeviceInstance);
3108 DPRINT1(
"ReenumerateDeviceInstance(%S 0x%08lx)\n",
3109 pszDeviceInstance, ulMinorAction);
3116 DPRINT1(
"CM_REENUMERATE_RETRY_INSTALLATION not implemented!\n");
3121 EnumerateDeviceData.
Flags = 0;
3124 &EnumerateDeviceData,
3138 DWORD ulMajorAction,
3139 DWORD ulMinorAction,
3140 LPWSTR pszDeviceInstance1,
3141 LPWSTR pszDeviceInstance2)
3147 DPRINT(
"PNP_DeviceInstanceAction(%p %lu 0x%08lx %S %S)\n",
3148 hBinding, ulMajorAction, ulMinorAction,
3149 pszDeviceInstance1, pszDeviceInstance2);
3151 switch (ulMajorAction)
3153 case PNP_DEVINST_SETUP:
3158 case PNP_DEVINST_ENABLE:
3162 case PNP_DEVINST_REENUMERATE:
3168 DPRINT1(
"Unknown device action %lu: not implemented\n", ulMajorAction);
3172 DPRINT(
"PNP_DeviceInstanceAction() done (returns %lx)\n",
ret);
3191 DPRINT(
"PNP_GetDeviceStatus(%p %S %p %p)\n",
3192 hBinding, pDeviceID, pulStatus, pulProblem, ulFlags);
3228 DPRINT1(
"PNP_DisableDevInst(%p %S %p %p %lu 0x%08lx)\n",
3229 hBinding, pDeviceID, pVetoType, pszVetoName, ulNameLength, ulFlags);
3265 lpPtr = lpDeviceIdList;
3269 if (0 ==
_wcsicmp(lpPtr, lpDeviceId))
3287 dwLen =
wcslen(lpDeviceId);
3288 dwPos = (*lpDeviceIdListSize /
sizeof(
WCHAR)) - 1;
3290 wcscpy(&lpDeviceIdList[dwPos], lpDeviceId);
3292 dwPos += (dwLen + 1);
3294 lpDeviceIdList[dwPos] = 0;
3296 *lpDeviceIdListSize = dwPos *
sizeof(
WCHAR);
3312 DWORD dwDeviceIdListSize;
3313 DWORD dwNewDeviceIdSize;
3318 DPRINT(
"PNP_AddID(%p %S %S 0x%08lx)\n",
3319 hBinding, pszDeviceID, pszID, ulFlags);
3327 DPRINT(
"Failed to open the device key!\n");
3340 DPRINT(
"Failed to query the desired ID string!\n");
3345 dwNewDeviceIdSize =
lstrlenW(pszDeviceID);
3346 if (!dwNewDeviceIdSize)
3352 dwDeviceIdListSize += (dwNewDeviceIdSize + 2) *
sizeof(
WCHAR);
3355 if (!pszDeviceIdList)
3357 DPRINT(
"Failed to allocate memory for the desired ID string!\n");
3369 DPRINT(
"Failed to query the desired ID string!\n");
3377 DPRINT(
"Device ID was found in the ID string!\n");
3392 DPRINT(
"Failed to set the desired ID string!\n");
3398 if (pszDeviceIdList)
3401 DPRINT(
"PNP_AddID() done (returns %lx)\n",
ret);
3415 DPRINT(
"PNP_RegisterDriver(%p %S 0x%lx)\n",
3445 DPRINT1(
"PNP_QueryRemove(%p %S %p %p %lu 0x%lx)\n",
3446 hBinding, pszDeviceID, pVetoType, pszVetoName,
3447 ulNameLength, ulFlags);
3456 if (pVetoType !=
NULL)
3459 if (pszVetoName !=
NULL && ulNameLength > 0)
3465 PlugPlayData.
VetoName = pszVetoName;
3471 sizeof(PlugPlayData));
3494 DPRINT1(
"PNP_RequestDeviceEject(%p %S %p %p %lu 0x%lx)\n",
3495 hBinding, pszDeviceID, pVetoType, pszVetoName,
3496 ulNameLength, ulFlags);
3504 if (pVetoType !=
NULL)
3507 if (pszVetoName !=
NULL && ulNameLength > 0)
3513 PlugPlayData.
VetoName = pszVetoName;
3519 sizeof(PlugPlayData));
3542 DPRINT1(
"PNP_IsDockStationPresent(%p %p)\n",
3571 else if (dwValue != 0)
3577 DPRINT1(
"PNP_IsDockStationPresent() done (returns %lx)\n",
ret);
3607 szDockDeviceInstance,
3637 DPRINT(
"PNP_HwProfFlags() called\n");
3645 L"System\\CurrentControlSet\\HardwareProfiles\\Current\\System\\CurrentControlSet\\Enum");
3650 L"System\\CurrentControlSet\\HardwareProfiles\\%04lu\\System\\CurrentControlSet\\Enum",
3661 if (ulAction == PNP_GET_HWPROFFLAGS)
3687 else if (ulAction == PNP_SET_HWPROFFLAGS)
3706 DWORD ulProfileInfoSize,
3709 WCHAR szProfileName[5];
3713 DWORD dwDisposition;
3720 DPRINT(
"PNP_GetHwProfInfo() called\n");
3722 if (ulProfileInfoSize == 0)
3741 L"System\\CurrentControlSet\\Control\\IDConfigDB",
3757 L"Hardware Profiles",
3821 if (hKeyProfile !=
NULL)
3824 if (hKeyProfiles !=
NULL)
3827 if (hKeyConfig !=
NULL)
3841 DWORD *pulLogConfTag,
3855 DWORD ulLogConfType,
3870 DWORD ulLogConfType,
3871 DWORD *pulLogConfTag,
3875 DWORD RegDataType = 0;
3876 ULONG ulDataSize = 0;
3880 DPRINT(
"PNP_GetFirstLogConf(%p %S %lu %p 0x%08lx)\n",
3881 hBinding, pDeviceID, ulLogConfType, pulLogConfTag, ulFlags);
3883 if (pulLogConfTag ==
NULL)
3886 *pulLogConfTag = (
DWORD)0;
3898 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
3910 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
3915 DPRINT(
"Data size %lu\n", ulDataSize);
3916 if (ulDataSize == 0 || lpData ==
NULL)
3918 DPRINT1(
"No config data available!\n");
3926 DPRINT(
"REG_RESOURCE_LIST\n");
3931 DPRINT1(
"No resource descriptors!\n");
3936 DPRINT(
"lpData %p\n", lpData);
3940 DPRINT(
"Offset (Tag): 0x%08lx\n", *pulLogConfTag);
3944 DPRINT1(
"FIXME: REG_RESOURCE_REQUIREMENTS_LIST\n");
3954 if (hConfigKey !=
NULL)
3957 DPRINT(
"PNP_GetFirstLogConf() returns %lu\n",
ret);
3969 DWORD ulLogConfType,
3975 DWORD RegDataType = 0;
3976 ULONG ulDataSize = 0;
3980 DPRINT(
"PNP_GetNextLogConf(%p %S %lu %ul %p 0x%08lx)\n",
3981 hBinding, pDeviceID, ulLogConfType, ulCurrentTag, pulNextTag, ulFlags);
3983 if (pulNextTag ==
NULL)
3986 *pulNextTag = (
DWORD)0;
3998 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4010 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4015 DPRINT(
"Data size %lu\n", ulDataSize);
4017 if (ulDataSize == 0 || lpData ==
NULL)
4019 DPRINT1(
"No config data available!\n");
4027 DPRINT1(
"FIXME: REG_RESOURCE_LIST\n");
4034 DPRINT1(
"FIXME: REG_RESOURCE_REQUIREMENTS_LIST\n");
4044 if (hConfigKey !=
NULL)
4047 DPRINT(
"PNP_GetNextLogConf() returns %lu\n",
ret);
4076 DWORD ulLogConfType,
4078 DWORD *pulResourceTag,
4095 DWORD ulLogConfType,
4097 DWORD ulResourceTag,
4098 DWORD *pulPreviousResType,
4099 DWORD *pulPreviousResTag,
4114 DWORD ulLogConfType,
4116 DWORD ulResourceTag,
4117 DWORD *pulNextResType,
4118 DWORD *pulNextResTag,
4122 DWORD RegDataType = 0;
4123 ULONG ulDataSize = 0;
4127 DPRINT1(
"PNP_GetNextResDes(%p %S 0x%lx %lu %lu %ul %p %p 0x%08lx)\n",
4128 hBinding, pDeviceID, ulLogConfTag, ulLogConfType, ResourceID,
4129 ulResourceTag, pulNextResType, pulNextResTag, ulFlags);
4131 if (pulNextResType ==
NULL)
4134 *pulNextResType = 0;
4146 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4158 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4163 DPRINT1(
"Data size %lu\n", ulDataSize);
4165 if (ulDataSize == 0 || lpData ==
NULL)
4167 DPRINT1(
"No config data available!\n");
4175 DPRINT1(
"FIXME: REG_RESOURCE_LIST\n");
4182 DPRINT1(
"FIXME: REG_RESOURCE_REQUIREMENTS_LIST\n");
4192 if (hConfigKey !=
NULL)
4195 DPRINT1(
"PNP_GetNextResDes() returns %lu\n",
ret);
4208 DWORD ulLogConfType,
4210 DWORD ulResourceTag,
4227 DWORD ulLogConfType,
4229 DWORD ulResourceTag,
4245 DWORD ulLogConfType,
4248 DWORD ulResourceTag,
4267 BOOL *pbConflictDetected,
4270 DPRINT(
"PNP_DetectResourceConflict()\n");
4272 if (pbConflictDetected !=
NULL)
4273 *pbConflictDetected =
FALSE;
4302 DWORD ulHardwareProfile,
4359 BYTE *pNotificationFilter,
4360 DWORD ulNotificationFilterSize,
4372 DPRINT1(
"PNP_RegisterNotification(%p %lx '%S' %p %lu 0x%lx %p %lx %p)\n",
4373 hBinding, ulUnknown2, pszName, pNotificationFilter,
4374 ulNotificationFilterSize, ulFlags, pulNotify, ulUnknown8, pulUnknown9);
4376 if (pNotificationFilter ==
NULL ||
4377 pulNotify ==
NULL ||
4378 pulUnknown9 ==
NULL)
4390 DPRINT1(
"DBT_DEVTYP_DEVICEINTERFACE\n");
4399 DPRINT1(
"DBT_DEVTYP_HANDLE\n");
4406 if (ulFlags & DEVICE_NOTIFY_ALL_INTERFACE_CLASSES)
4418 if (pNotifyData ==
NULL)
4421 *pulNotify = (
DWORD)pNotifyData;
4437 DPRINT1(
"PNP_UnregisterNotification(%p 0x%lx)\n",
4456 DWORD *pulRegDataType,
4469 DPRINT(
"PNP_GetCustomDevProp() called\n");
4471 if (pulTransferLen ==
NULL || pulLength ==
NULL)
4486 if (*pulLength < *pulTransferLen)
4487 *pulLength = *pulTransferLen;
4489 *pulTransferLen = 0;
4503 L"Device Parameters",
4534 *pulTransferLen = *pulLength;
4536 if (hParamKey !=
NULL)
4539 if (hDeviceKey !=
NULL)
4542 DPRINT(
"PNP_GetCustomDevProp() done (returns %lx)\n",
ret);
4582 DWORD *pulSSDIFlags,
4587 DPRINT1(
"PNP_GetServerSideDeviceInstallFlags(%p %p %lu)\n",
4590 if (pulSSDIFlags ==
NULL)
4610 LPWSTR PropertyCultureName,
4628 LPWSTR PropertyCultureName,
4648 LPWSTR PropertyCultureName,
#define CR_NO_SUCH_REGISTRY_KEY
DWORD WINAPI PNP_GetInterfaceDeviceList(handle_t hBinding, GUID *InterfaceGuid, LPWSTR pszDeviceID, BYTE *Buffer, PNP_RPC_BUFFER_SIZE *pulLength, DWORD ulFlags)
struct _CM_RESOURCE_LIST * PCM_RESOURCE_LIST
#define PNP_PROPERTY_POWER_DATA
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
#define CR_INVALID_DEVINST
DWORD WINAPI PNP_GetDepth(handle_t hBinding, LPWSTR pszDeviceID, DWORD *pulDepth, DWORD ulFlags)
#define PROCESS_ALL_ACCESS
DWORD WINAPI PNP_DeleteRegistryKey(handle_t hBinding, LPWSTR pszDeviceID, LPWSTR pszParentKey, LPWSTR pszChildKey, DWORD ulFlags)
#define CM_REGISTER_DEVICE_DRIVER_BITS
unsigned long PNP_RPC_BUFFER_SIZE
DWORD WINAPI PNP_GetFirstLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD *pulLogConfTag, DWORD ulFlags)
#define ERROR_NO_MORE_ITEMS
DWORD WINAPI PNP_GetResDesDataSize(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD ulResourceTag, DWORD *pulSize, DWORD ulFlags)
IN BOOLEAN OUT PSTR Buffer
#define CM_CREATE_DEVNODE_GENERATE_ID
#define UNREFERENCED_PARAMETER(P)
#define STATUS_INVALID_PARAMETER
#define DBT_DEVTYP_DEVICEINTERFACE
static VOID SplitDeviceInstanceID(IN LPWSTR pszDeviceInstanceID, OUT LPWSTR pszEnumerator, OUT LPWSTR pszDevice, OUT LPWSTR pszInstance)
#define CM_DRP_REMOVAL_POLICY_HW_DEFAULT
DWORD WINAPI PNP_UnregisterNotification(handle_t hBinding, DWORD ulNotify)
#define CM_DELETE_CLASS_SUBKEYS
#define CM_DRP_FRIENDLYNAME
DWORD WINAPI PNP_GetNextLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD ulCurrentTag, DWORD *pulNextTag, DWORD ulFlags)
#define CM_DRP_LEGACYBUSTYPE
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)
#define CM_GETIDLIST_FILTER_NONE
static CONFIGRET SetupDeviceInstance(_In_ LPWSTR pszDeviceInstance, _In_ DWORD ulMinorAction)
static CONFIGRET GetServiceInstanceListSize(_In_ PWSTR pszService, _Out_ PDWORD pulLength)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
static BOOL IsValidDeviceInstanceID(_In_ PWSTR pszDeviceInstanceID)
DWORD WINAPI PNP_RegisterNotification(handle_t hBinding, DWORD ulUnknown2, LPWSTR pszName, BYTE *pNotificationFilter, DWORD ulNotificationFilterSize, DWORD ulFlags, DWORD *pulNotify, DWORD ulUnknown8, DWORD *pulUnknown9)
static CONFIGRET WINAPI NtStatusToCrError(NTSTATUS Status)
static CONFIGRET GetAllInstanceList(_Inout_ PWSTR pszBuffer, _Inout_ PDWORD pulLength)
#define CM_GETIDLIST_FILTER_SERVICE
DWORD WINAPI PNP_CreateDevInst(handle_t hBinding, LPWSTR pszDeviceID, LPWSTR pszParentDeviceID, PNP_RPC_STRING_LEN ulLength, DWORD ulFlags)
_Check_return_ _Out_ PULONG pulSize
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
DWORD WINAPI GetLastError(VOID)
static CONFIGRET GetAllInstanceListSize(_Out_ PULONG pulLength)
#define TOKEN_ASSIGN_PRIMARY
_In_ BOOL _In_ HANDLE hProcess
DWORD WINAPI PNP_ReportLogOn(handle_t hBinding, BOOL Admin, DWORD ProcessId)
#define PNP_SET_DEVICE_STATUS
#define CM_DRP_BUSTYPEGUID
DWORD WINAPI PNP_GetNextResDes(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD ulResourceTag, DWORD *pulNextResType, DWORD *pulNextResTag, DWORD ulFlags)
#define CR_ALREADY_SUCH_DEVINST
#define CM_DRP_COMPATIBLEIDS
DWORD WINAPI PNP_DriverStoreDeleteDriverPackage(handle_t hBinding)
UNICODE_STRING DeviceInstance
CONFIGRET GetEnumeratorInstanceList(_In_ PWSTR pszEnumerator, _Inout_ PWSTR pszBuffer, _Inout_ PDWORD pulLength)
struct _DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE_W
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName
DWORD WINAPI PNP_RequestEjectPC(handle_t hBinding)
#define HKEY_CURRENT_CONFIG
static CONFIGRET GetDeviceInstanceListSize(_In_ LPCWSTR pszDevice, _Out_ PULONG pulLength)
#define CM_GETIDLIST_FILTER_BUSRELATIONS
#define CM_DRP_REMOVAL_POLICY
DWORD WINAPI PNP_DeleteServiceDevices(handle_t hBinding)
DWORD WINAPI PNP_GetServerSideDeviceInstallFlags(handle_t hBinding, DWORD *pulSSDIFlags, DWORD ulFlags)
DWORD WINAPI PNP_UnregisterDeviceClassAssociation(handle_t hBinding, LPWSTR pszInterfaceDevice, DWORD ulFlags)
#define CM_SETUP_WRITE_LOG_CONFS
#define REG_RESOURCE_REQUIREMENTS_LIST
#define CM_GETIDLIST_FILTER_EJECTRELATIONS
#define CM_ADD_ID_COMPATIBLE
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)
#define CM_CRP_CHARACTERISTICS
struct _DEV_BROADCAST_DEVICEINTERFACE_W * PDEV_BROADCAST_DEVICEINTERFACE_W
#define STATUS_BUFFER_TOO_SMALL
DWORD WINAPI PNP_GetDeviceStatus(handle_t hBinding, LPWSTR pDeviceID, DWORD *pulStatus, DWORD *pulProblem, DWORD ulFlags)
#define STATUS_PLUGPLAY_QUERY_VETOED
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)
#define CM_DRP_UPPERFILTERS
return STATUS_NOT_IMPLEMENTED
DWORD WINAPI PNP_GetClassCount(handle_t hBinding, DWORD *pulClassCount, DWORD ulFlags)
#define CM_SETUP_DOWNLOAD
static CONFIGRET GetDeviceStatus(_In_ LPWSTR pszDeviceID, _Out_ DWORD *pulStatus, _Out_ DWORD *pulProblem)
#define CM_REENUMERATE_BITS
LONG WINAPI RegCloseKey(HKEY hKey)
UINT32 void void ** ReturnValue
static CONFIGRET OpenConfigurationKey(_In_ LPCWSTR pszDeviceID, _Out_ PHKEY phKey)
DWORD WINAPI PNP_FreeLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD ulLogConfTag, DWORD ulFlags)
#define CM_DRP_LOWERFILTERS
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)
#define CR_NO_MORE_LOG_CONF
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
DWORD WINAPI PNP_FreeResDes(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD ulResourceTag, DWORD *pulPreviousResType, DWORD *pulPreviousResTag, DWORD ulFlags)
static VOID AppendDeviceId(LPWSTR lpDeviceIdList, LPDWORD lpDeviceIdListSize, LPWSTR lpDeviceId)
RPC_STATUS WINAPI RpcServerListen(UINT MinimumCallThreads, UINT MaxCalls, UINT DontWait)
DWORD WINAPI PNP_GetVersion(handle_t hBinding, WORD *pVersion)
#define FILTERED_LOG_CONF
DWORD WINAPI PNP_QueryRemove(handle_t hBinding, LPWSTR pszDeviceID, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
DWORD WINAPI PNP_InstallDevInst(handle_t hBinding)
#define CM_DRP_ENUMERATOR_NAME
CONFIGRET WINAPI PNP_IsDockStationPresent(handle_t hBinding, BOOL *Present)
DWORD WINAPI PNP_CreateKey(handle_t hBinding, LPWSTR pszSubKey, DWORD samDesired, 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)
static CONFIGRET GetRelationsInstanceListSize(_In_ PWSTR pszDevice, _In_ DWORD ulFlags, _Inout_ PDWORD pulLength)
DWORD WINAPI PNP_SetActiveService(handle_t hBinding, LPWSTR pszFilter, DWORD ulFlags)
DWORD WINAPI PNP_DetectResourceConflict(handle_t hBinding, LPWSTR pDeviceID, RESOURCEID ResourceID, BYTE *ResourceData, PNP_RPC_BUFFER_SIZE ResourceLen, BOOL *pbConflictDetected, DWORD ulFlags)
#define PNP_PROPERTY_BUSTYPEGUID
#define CR_INVALID_PROPERTY
#define PNP_PROPERTY_REMOVAL_POLICY_HARDWARE_DEFAULT
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_QueryArbitratorFreeData(handle_t hBinding, BYTE *pData, DWORD DataLen, LPWSTR pDeviceID, RESOURCEID ResourceID, DWORD ulFlags)
unsigned long PNP_PROP_COUNT
CONFIGRET WINAPI PNP_RunDetection(handle_t hBinding, DWORD ulFlags)
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)
#define REG_CREATED_NEW_KEY
#define REG_RESOURCE_LIST
#define CM_CREATE_DEVNODE_BITS
static CONFIGRET ClearDeviceStatus(_In_ LPWSTR pszDeviceID, _In_ DWORD ulStatus, _In_ DWORD ulProblem)
DWORD WINAPI PNP_ApplyPowerSettings(handle_t hBinding)
DWORD WINAPI PNP_SetClassRegProp(handle_t hBinding, LPWSTR pszClassGuid, DWORD ulProperty, DWORD ulDataType, BYTE *Buffer, PNP_PROP_SIZE ulLength, DWORD ulFlags)
#define CM_GLOBAL_STATE_SERVICES_AVAILABLE
#define PNP_PROPERTY_ADDRESS
#define CM_GETIDLIST_FILTER_REMOVALRELATIONS
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
static CONFIGRET EnableDeviceInstance(_In_ LPWSTR pszDeviceInstance)
DWORD WINAPI PNP_ValidateDeviceInstance(handle_t hBinding, LPWSTR pDeviceID, DWORD ulFlags)
UNICODE_STRING DeviceInstance
struct _DEV_BROADCAST_HANDLE DEV_BROADCAST_HANDLE
#define REG_OPTION_NON_VOLATILE
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)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
static HANDLE hServicesKey
static CONFIGRET SetDeviceStatus(_In_ LPWSTR pszDeviceID, _In_ DWORD ulStatus, _In_ DWORD ulProblem)
#define PNP_PROPERTY_LOCATION_PATHS
_In_ WDFDEVICE _In_ PWDF_DEVICE_INTERFACE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG _Out_ PDEVPROPTYPE PropertyType
static CONFIGRET GetConfigurationData(_In_ HKEY hKey, _In_ ULONG ulLogConfType, _Out_ PULONG pulRegDataType, _Out_ PULONG pulDataSize, _Out_ LPBYTE *ppBuffer)
#define PNP_PROPERTY_ENUMERATOR_NAME
_Must_inspect_result_ _In_ ULONG Flags
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
static DWORD DWORD * dwLength
UNICODE_STRING DeviceInstance
DWORD WINAPI PNP_GetClassInstance(handle_t hBinding, LPWSTR pDeviceId, LPWSTR pszClassInstance, PNP_RPC_STRING_LEN ulLength)
#define NT_SUCCESS(StatCode)
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)
#define CM_GLOBAL_STATE_CAN_DO_UI
#define PNP_GET_DEVICE_STATUS
#define STATUS_NO_SUCH_DEVICE
#define PNP_PROPERTY_REMOVAL_POLICY
DWORD WINAPI PNP_QueryArbitratorFreeSize(handle_t hBinding, DWORD *pulSize, LPWSTR pDeviceID, RESOURCEID ResourceID, DWORD ulFlags)
UNICODE_STRING DeviceInstance
#define CM_DRP_HARDWAREID
#define CM_DRP_REMOVAL_POLICY_OVERRIDE
static CONFIGRET GetDeviceInstanceList(_In_ PWSTR pszDevice, _Inout_ PWSTR pszBuffer, _Inout_ PDWORD pulLength)
#define CR_INVALID_LOG_CONF
struct _DEV_BROADCAST_HANDLE * PDEV_BROADCAST_HANDLE
DWORD WINAPI PNP_SetHwProf(handle_t hBinding, DWORD ulHardwareProfile, DWORD ulFlags)
DWORD WINAPI PNP_InitDetection(handle_t hBinding)
#define CM_DRP_LOCATION_INFORMATION
RPC_STATUS WINAPI RpcServerRegisterIf(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv)
DWORD WINAPI PNP_RegisterServiceNotification(handle_t hBinding)
#define STATUS_ACCESS_DENIED
DWORD WINAPI PNP_DeviceInstanceAction(handle_t hBinding, DWORD ulMajorAction, DWORD ulMinorAction, LPWSTR pszDeviceInstance1, LPWSTR pszDeviceInstance2)
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)
DWORD WINAPI PNP_AddEmptyLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulPriority, DWORD *pulLogConfTag, DWORD ulFlags)
DWORD WINAPI PNP_DisableDevInst(handle_t hBinding, LPWSTR pDeviceID, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
DWORD WINAPI PNP_GetHwProfInfo(handle_t hBinding, DWORD ulIndex, HWPROFILEINFO *pHWProfileInfo, DWORD ulProfileInfoSize, DWORD ulFlags)
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)
static CONFIGRET DisableDeviceInstance(_In_ LPWSTR pszDeviceInstance, _Inout_opt_ PPNP_VETO_TYPE pVetoType, _Inout_opt_ LPWSTR pszVetoName, _In_ DWORD ulNameLength)
DWORD WINAPI PNP_GetBlockedDriverInfo(handle_t hBinding, BYTE *Buffer, PNP_RPC_BUFFER_SIZE *pulTransferLen, PNP_RPC_BUFFER_SIZE *pulLength, DWORD ulFlags)
#define CM_DRP_BASE_CONTAINERID
#define PNP_PROPERTY_UI_NUMBER
static BOOL IsRootDeviceInstanceID(_In_ PWSTR pszDeviceInstanceID)
#define MAX_DEVICE_ID_LEN
#define CM_GETIDLIST_FILTER_POWERRELATIONS
#define PNP_CLEAR_DEVICE_STATUS
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const GUID InterfaceGuid
#define CM_DRP_DEVICEDESC
#define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME
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)
#define PNP_PROPERTY_PHYSICAL_DEVICE_OBJECT_NAME
#define CR_INVALID_DEVNODE
_Must_inspect_result_ _In_ WDFCMRESLIST List
static BOOL CheckForDeviceId(LPWSTR lpDeviceIdList, LPWSTR lpDeviceId)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID PropertyBuffer
#define CM_DRP_DEVICE_POWER_DATA
static CONFIGRET GetEnumeratorInstanceListSize(_In_ LPCWSTR pszEnumerator, _Out_ PULONG pulLength)
DWORD WINAPI PNP_RegisterDriver(handle_t hBinding, LPWSTR pszDeviceID, DWORD ulFlags)
enum _PNP_VETO_TYPE * PPNP_VETO_TYPE
RPC_STATUS WINAPI RpcServerUseProtseqEpW(RPC_WSTR Protseq, UINT MaxCalls, RPC_WSTR Endpoint, LPVOID SecurityDescriptor)
unsigned long PNP_PROP_SIZE
DWORD WINAPI RpcServerThread(LPVOID lpParameter)
DWORD WINAPI PNP_GetDeviceList(handle_t hBinding, LPWSTR pszFilter, LPWSTR Buffer, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)