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;
623 if (pResourceList ==
NULL)
656 DPRINT1(
"AllocateAndInitializeSid failed\n");
664 DPRINT1(
"RpcImpersonateClient failed (Status 0x%08lx)\n", RpcStatus);
691 DPRINT1(
"PNP_NOTIFY_HANDLE_rundown(%p)\n", pHandle);
728 DPRINT(
"PNP_GetVersion(%p %p)\n",
747 DPRINT(
"PNP_GetGlobalState(%p %p 0x%08lx)\n",
770 DPRINT(
"PNP_InitDetection(%p)\n",
790 DPRINT(
"PNP_ReportLogOn(%p %u, %u)\n",
846 DPRINT(
"PNP_ValidateDeviceInstance(%p %S 0x%08lx)\n",
858 DPRINT(
"Could not open the Device Key!\n");
866 if (hDeviceKey !=
NULL)
869 DPRINT(
"PNP_ValidateDeviceInstance() done (returns %lx)\n",
ret);
887 DPRINT(
"PNP_GetRootDeviceInstance(%p %S %lu)\n",
906 DPRINT(
"PNP_GetRootDeviceInstance() done (returns %lx)\n",
ret);
917 DWORD ulRelationship,
930 DPRINT(
"PNP_GetRelatedDeviceInstance(%p %lu %S %p %p 0x%lx)\n",
931 hBinding, ulRelationship, pDeviceID, pRelatedDeviceId,
937 if (ulRelationship == PNP_GET_PARENT_DEVICE_INSTANCE)
957 else if (ulRelationship == PNP_GET_SIBLING_DEVICE_INSTANCE)
967 PlugPlayData.
Relation = ulRelationship;
973 (
PVOID)&PlugPlayData,
980 DPRINT(
"PNP_GetRelatedDeviceInstance() done (returns %lx)\n",
ret);
1009 DPRINT(
"PNP_EnumerateSubKeys(%p %lu %lu %p %lu %p 0x%08lx)\n",
1011 pulRequiredLen, ulFlags);
1015 case PNP_ENUMERATOR_SUBKEYS:
1019 case PNP_CLASS_SUBKEYS:
1027 *pulRequiredLen = ulLength;
1042 (*pulRequiredLen)++;
1045 DPRINT(
"PNP_EnumerateSubKeys() done (returns %lx)\n",
ret);
1084 PlugPlayData.
Buffer = pszBuffer;
1087 (
PVOID)&PlugPlayData,
1109 WCHAR szPathBuffer[512];
1112 DWORD dwValues,
dwSize, dwIndex, dwUsedLength, dwPathLength;
1119 L"System\\CurrentControlSet\\Services",
1125 DPRINT(
"Failed to open the services key (Error %lu)\n", dwError);
1136 DPRINT(
"Failed to open the service key (Error %lu)\n", dwError);
1148 DPRINT(
"Failed to open the service enum key (Error %lu)\n", dwError);
1163 DPRINT(
"RegQueryValueExW failed (Error %lu)\n", dwError);
1167 DPRINT(
"dwValues %lu\n", dwValues);
1172 for (dwIndex = 0; dwIndex < dwValues; dwIndex++)
1176 dwSize =
sizeof(szPathBuffer);
1186 DPRINT(
"Path: %S\n", szPathBuffer);
1188 dwPathLength =
wcslen(szPathBuffer) + 1;
1189 if (dwUsedLength + dwPathLength + 1 > *pulLength)
1195 wcscpy(pPtr, szPathBuffer);
1196 dwUsedLength += dwPathLength;
1197 pPtr += dwPathLength;
1206 if (hServiceKey !=
NULL)
1213 *pulLength = dwUsedLength + 1;
1229 WCHAR szPathBuffer[512];
1231 DWORD dwInstanceLength, dwPathLength, dwUsedLength;
1232 DWORD dwIndex, dwError;
1244 DPRINT(
"Failed to open the device key (Error %lu)\n", dwError);
1251 for (dwIndex = 0; ; dwIndex++)
1265 wsprintf(szPathBuffer,
L"%s\\%s", pszDevice, szInstanceBuffer);
1266 DPRINT(
"Path: %S\n", szPathBuffer);
1268 dwPathLength =
wcslen(szPathBuffer) + 1;
1269 if (dwUsedLength + dwPathLength + 1 > *pulLength)
1275 wcscpy(pPtr, szPathBuffer);
1276 dwUsedLength += dwPathLength;
1277 pPtr += dwPathLength;
1285 *pulLength = dwUsedLength + 1;
1300 WCHAR szPathBuffer[512];
1301 HKEY hEnumeratorKey;
1303 DWORD dwIndex, dwDeviceLength, dwUsedLength, dwRemainingLength, dwPathLength;
1315 DPRINT(
"Failed to open the enumerator key (Error %lu)\n", dwError);
1320 dwRemainingLength = *pulLength;
1323 for (dwIndex = 0; ; dwIndex++)
1337 wsprintf(szPathBuffer,
L"%s\\%s", pszEnumerator, szDeviceBuffer);
1338 DPRINT(
"Path: %S\n", szPathBuffer);
1340 dwPathLength = dwRemainingLength;
1347 dwUsedLength += dwPathLength - 1;
1348 dwRemainingLength -= dwPathLength - 1;
1349 pPtr += dwPathLength - 1;
1355 *pulLength = dwUsedLength + 1;
1371 DWORD dwIndex, dwEnumeratorLength, dwUsedLength, dwRemainingLength, dwPathLength;
1376 dwRemainingLength = *pulLength;
1379 for (dwIndex = 0; ; dwIndex++)
1385 &dwEnumeratorLength,
1390 dwPathLength = dwRemainingLength;
1397 dwUsedLength += dwPathLength - 1;
1398 dwRemainingLength -= dwPathLength - 1;
1399 pPtr += dwPathLength - 1;
1403 *pulLength = dwUsedLength + 1;
1426 DPRINT(
"PNP_GetDeviceList(%p %S %p %p 0x%08lx)\n",
1432 if (pulLength ==
NULL)
1436 (pszFilter ==
NULL))
1521 (
PVOID)&PlugPlayData,
1549 L"System\\CurrentControlSet\\Services",
1555 DPRINT(
"Failed to open the services key (Error %lu)\n", dwError);
1566 DPRINT(
"Failed to open the service key (Error %lu)\n", dwError);
1578 DPRINT(
"Failed to open the service enum key (Error %lu)\n", dwError);
1593 DPRINT(
"RegQueryValueExW failed (Error %lu)\n", dwError);
1612 DPRINT(
"RegQueryInfoKeyW failed (Error %lu)\n", dwError);
1616 DPRINT(
"dwValues %lu dwMaxValueLength %lu\n", dwValues, dwMaxValueLength /
sizeof(
WCHAR));
1619 *pulLength = dwValues * dwMaxValueLength /
sizeof(
WCHAR) + 2;
1625 if (hServiceKey !=
NULL)
1642 DWORD dwSubKeys, dwMaxSubKeyLength;
1653 DPRINT(
"Failed to open the device key (Error %lu)\n", dwError);
1672 DPRINT(
"RegQueryInfoKeyW failed (Error %lu)\n", dwError);
1674 dwMaxSubKeyLength = 0;
1681 *pulLength = dwSubKeys * (
wcslen(pszDevice) + 1 + dwMaxSubKeyLength + 1);
1694 WCHAR szPathBuffer[512];
1695 HKEY hEnumeratorKey;
1696 DWORD dwIndex, dwDeviceLength, dwBufferLength;
1710 DPRINT(
"Failed to open the enumerator key (Error %lu)\n", dwError);
1714 for (dwIndex = 0; ; dwIndex++)
1728 wsprintf(szPathBuffer,
L"%s\\%s", pszEnumerator, szDeviceBuffer);
1729 DPRINT(
"Path: %S\n", szPathBuffer);
1738 *pulLength += dwBufferLength;
1754 DWORD dwIndex, dwEnumeratorLength, dwBufferLength;
1758 for (dwIndex = 0; ; dwIndex++)
1764 &dwEnumeratorLength,
1775 *pulLength += dwBufferLength;
1796 DPRINT(
"PNP_GetDeviceListSize(%p %S %p 0x%08lx)\n",
1797 hBinding, pszFilter, pulLength, ulFlags);
1802 if (pulLength ==
NULL)
1806 (pszFilter ==
NULL))
1873 DPRINT(
"PNP_GetDepth(%p %S %p 0x%08lx)\n",
1874 hBinding, pszDeviceID, pulDepth, ulFlags);
1883 (
PVOID)&PlugPlayData,
1887 *pulDepth = PlugPlayData.
Depth;
1894 DPRINT(
"PNP_GetDepth() done (returns %lx)\n",
ret);
1907 DWORD *pulRegDataType,
1922 DPRINT(
"PNP_GetDeviceRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
1924 pulTransferLen, pulLength, ulFlags);
1926 if (pulTransferLen ==
NULL || pulLength ==
NULL)
1945 if (*pulLength < *pulTransferLen)
1946 *pulLength = *pulTransferLen;
1948 *pulTransferLen = 0;
1953 lpValueName =
L"DeviceDesc";
1957 lpValueName =
L"HardwareID";
1961 lpValueName =
L"CompatibleIDs";
1965 lpValueName =
L"Service";
1969 lpValueName =
L"Class";
1973 lpValueName =
L"ClassGUID";
1977 lpValueName =
L"Driver";
1981 lpValueName =
L"ConfigFlags";
1985 lpValueName =
L"Mfg";
1989 lpValueName =
L"FriendlyName";
1993 lpValueName =
L"LocationInformation";
1998 *pulRegDataType =
REG_SZ;
2002 lpValueName =
L"Capabilities";
2010 lpValueName =
L"UpperFilters";
2014 lpValueName =
L"LowerFilters";
2034 *pulRegDataType =
REG_SZ;
2038 lpValueName =
L"Security";
2042 lpValueName =
L"DeviceType";
2046 lpValueName =
L"Exclusive";
2050 lpValueName =
L"DeviceCharacteristics";
2059 lpValueName =
L"UINumberDescFormat";
2078 lpValueName =
L"RemovalPolicy";
2087#if (WINVER >= _WIN32_WINNT_WS03)
2094#if (WINVER >= _WIN32_WINNT_WIN7)
2097 *pulRegDataType =
REG_SZ;
2106 DPRINT(
"Value name: %S\n", lpValueName);
2152 (
PVOID)&PlugPlayData,
2156 *pulLength = PlugPlayData.BufferSize;
2171 DPRINT(
"PNP_GetDeviceRegProp() done (returns %lx)\n",
ret);
2196 DPRINT(
"PNP_SetDeviceRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
2206 lpValueName =
L"DeviceDesc";
2210 lpValueName =
L"HardwareID";
2214 lpValueName =
L"CompatibleIDs";
2218 lpValueName =
L"Service";
2222 lpValueName =
L"Class";
2226 lpValueName =
L"ClassGUID";
2230 lpValueName =
L"Driver";
2234 lpValueName =
L"ConfigFlags";
2238 lpValueName =
L"Mfg";
2242 lpValueName =
L"FriendlyName";
2246 lpValueName =
L"LocationInformation";
2250 lpValueName =
L"UpperFilters";
2254 lpValueName =
L"LowerFilters";
2258 lpValueName =
L"Security";
2262 lpValueName =
L"DeviceType";
2266 lpValueName =
L"Exclusive";
2270 lpValueName =
L"DeviceCharacteristics";
2274 lpValueName =
L"UINumberDescFormat";
2278 lpValueName =
L"RemovalPolicy";
2285 DPRINT(
"Value name: %S\n", lpValueName);
2313 DPRINT(
"PNP_SetDeviceRegProp() done (returns %lx)\n",
ret);
2328 WCHAR szClassGuid[40];
2329 WCHAR szClassInstance[5];
2331 HKEY hClassInstanceKey;
2332 ULONG ulTransferLength, ulDataLength;
2333 DWORD dwDataType, dwDisposition,
i;
2337 DPRINT(
"PNP_GetClassInstance(%p %S %p %lu)\n",
2338 hBinding, pDeviceId, pszClassInstance, ulLength);
2343 ulTransferLength = ulLength;
2348 (
BYTE *)pszClassInstance,
2355 ulTransferLength =
sizeof(szClassGuid);
2356 ulDataLength =
sizeof(szClassGuid);
2361 (
BYTE *)szClassGuid,
2367 DPRINT1(
"PNP_GetDeviceRegProp() failed (Error %lu)\n",
ret);
2378 DPRINT1(
"RegOpenKeyExW() failed (Error %lu)\n", dwError);
2383 for (
i = 0;
i < 10000;
i++)
2407 ulDataLength = (
wcslen(pszClassInstance) + 1) *
sizeof(
WCHAR);
2412 (
BYTE *)pszClassInstance,
2417 DPRINT1(
"PNP_SetDeviceRegProp() failed (Error %lu)\n",
ret);
2428 if (hDeviceClassKey !=
NULL)
2451 DPRINT(
"PNP_CreateKey(%p %S 0x%lx 0x%08lx)\n",
2452 hBinding, pszSubKey, samDesired, ulFlags);
2472 L"Device Parameters",
2489 if (hParametersKey !=
NULL)
2492 if (hDeviceKey !=
NULL)
2519 DWORD *pulClassCount,
2528 DPRINT(
"PNP_GetClassCount(%p %p 0x%08lx)\n",
2577 DPRINT(
"PNP_GetClassName(%p %S %p %p 0x%08lx)\n",
2580 lstrcpyW(szKeyName,
L"System\\CurrentControlSet\\Control\\Class\\");
2611 DPRINT(
"PNP_GetClassName() done (returns %lx)\n",
ret);
2629 DPRINT(
"PNP_DeleteClassKey(%p %S 0x%08lx)\n",
2643 DPRINT(
"PNP_DeleteClassKey() done (returns %lx)\n",
ret);
2654 LPWSTR pszInterfaceDevice,
2655 GUID *AliasInterfaceGuid,
2656 LPWSTR pszAliasInterfaceDevice,
2667 DPRINT(
"PNP_GetInterfaceDeviceAlias(%p %S %p %p %p %p 0x%08lx)\n",
2668 hBinding, pszInterfaceDevice, AliasInterfaceGuid, pszAliasInterfaceDevice, pulLength,
2669 pulTransferLen, ulFlags);
2671 if ((AliasInterfaceGuid ==
NULL) ||
2672 (pulLength ==
NULL))
2689 *pulTransferLen = *pulLength + 1;
2694 *pulTransferLen = 0;
2698 DPRINT(
"PNP_GetInterfaceDeviceAlias() done (returns %lx)\n",
ret);
2720 DPRINT(
"PNP_GetInterfaceDeviceList(%p %p %S %p %p 0x%08lx)\n",
2729 PlugPlayData.
Flags = ulFlags;
2735 (
PVOID)&PlugPlayData,
2746 DPRINT(
"PNP_GetInterfaceDeviceList() done (returns %lx)\n",
ret);
2767 DPRINT(
"PNP_GetInterfaceDeviceListSize(%p %p %p %S 0x%08lx)\n",
2779 PlugPlayData.
Flags = ulFlags;
2782 (
PVOID)&PlugPlayData,
2793 DPRINT(
"PNP_GetInterfaceDeviceListSize() done (returns %lx)\n",
ret);
2817 DPRINT1(
"PNP_RegisterDeviceClassAssociation(%p %S %p %S %S %p %p 0x%08lx)\n",
2819 pulLength, pulTransferLen, ulFlags);
2822 (pszSymLink ==
NULL) ||
2823 (pulLength ==
NULL) ||
2824 (pulTransferLen ==
NULL))
2846 *pulTransferLen = *pulLength;
2863 LPWSTR pszInterfaceDevice,
2872 DPRINT1(
"PNP_UnregisterDeviceClassAssociation(%p %S 0x%08lx)\n",
2873 hBinding, pszInterfaceDevice, ulFlags);
2875 if (pszInterfaceDevice ==
NULL)
2881 ZeroMemory(&PlugPlayData,
sizeof(PlugPlayData));
2903 DWORD *pulRegDataType,
2917 DPRINT(
"PNP_GetClassRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
2918 hBinding, pszClassGuid, ulProperty, pulRegDataType,
2919 Buffer, pulTransferLen, pulLength, ulFlags);
2921 if (pulTransferLen ==
NULL || pulLength ==
NULL)
2933 if (*pulLength < *pulTransferLen)
2934 *pulLength = *pulTransferLen;
2936 *pulTransferLen = 0;
2941 lpValueName =
L"Security";
2945 lpValueName =
L"DeviceType";
2949 lpValueName =
L"Exclusive";
2953 lpValueName =
L"DeviceCharacteristics";
2961 DPRINT(
"Value name: %S\n", lpValueName);
3008 *pulTransferLen = *pulLength;
3010 if (hPropKey !=
NULL)
3013 if (hInstKey !=
NULL)
3016 DPRINT(
"PNP_GetClassRegProp() done (returns %lx)\n",
ret);
3042 DPRINT(
"PNP_SetClassRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
3043 hBinding, pszClassGuid, ulProperty, ulDataType,
3044 Buffer, ulLength, ulFlags);
3052 lpValueName =
L"Security";
3056 lpValueName =
L"DeviceType";
3060 lpValueName =
L"Exclusive";
3064 lpValueName =
L"DeviceCharacteristics";
3116 if (hPropKey !=
NULL)
3119 if (hInstKey !=
NULL)
3135 HKEY hKeyEnumerator;
3189 DPRINT1(
"Instance %S already exists!\n", szInstance);
3216 DWORD dwPhantomValue = 1;
3221 (
PBYTE)&dwPhantomValue,
3222 sizeof(dwPhantomValue));
3254 DWORD dwInstanceNumber;
3263 dwInstanceNumber = 0;
3266 if (dwInstanceNumber >= 10000)
3269 swprintf(szGeneratedInstance,
L"Root\\%ls\\%04lu",
3270 pszDeviceID, dwInstanceNumber);
3282 if (
wcslen(szGeneratedInstance) > ulLength)
3288 wcscpy(pszDeviceID, szGeneratedInstance);
3301 LPWSTR pszParentDeviceID,
3311 DPRINT(
"PNP_CreateDevInst(%p %S %S %lu 0x%08lx)\n",
3312 hBinding, pszParentDeviceID, pszDeviceID, ulLength, ulFlags);
3317 if (pszDeviceID ==
NULL || pszParentDeviceID ==
NULL)
3370 sizeof(ControlData));
3393 DPRINT(
"PNP_CreateDevInst() done (returns %lx)\n",
ret);
3407 DWORD ulStatus, ulProblem;
3412 DPRINT1(
"SetupDeviceInstance(%S 0x%08lx)\n",
3413 pszDeviceInstance, ulMinorAction);
3433 dwSize =
sizeof(dwDisableCount);
3441 (dwDisableCount > 0))
3475 if (hDeviceKey !=
NULL)
3490 DPRINT(
"Enable device instance %S\n", pszDeviceInstance);
3510 DPRINT1(
"ReenumerateDeviceInstance(%S 0x%08lx)\n",
3511 pszDeviceInstance, ulMinorAction);
3518 DPRINT1(
"CM_REENUMERATE_RETRY_INSTALLATION not implemented!\n");
3523 EnumerateDeviceData.
Flags = 0;
3526 &EnumerateDeviceData,
3540 DWORD ulMajorAction,
3541 DWORD ulMinorAction,
3542 LPWSTR pszDeviceInstance1,
3543 LPWSTR pszDeviceInstance2)
3549 DPRINT(
"PNP_DeviceInstanceAction(%p %lu 0x%08lx %S %S)\n",
3550 hBinding, ulMajorAction, ulMinorAction,
3551 pszDeviceInstance1, pszDeviceInstance2);
3553 switch (ulMajorAction)
3555 case PNP_DEVINST_SETUP:
3560 case PNP_DEVINST_ENABLE:
3564 case PNP_DEVINST_REENUMERATE:
3570 DPRINT1(
"Unknown device action %lu: not implemented\n", ulMajorAction);
3574 DPRINT(
"PNP_DeviceInstanceAction() done (returns %lx)\n",
ret);
3590 DWORD ulDataType, ulTransferLength, ulLength;
3591 DWORD ulCapabilities, ulConfigFlags;
3597 DPRINT(
"PNP_GetDeviceStatus(%p %S %p %p 0x%08lx)\n",
3598 hBinding, pDeviceID, pulStatus, pulProblem, ulFlags);
3603 if ((pulStatus ==
NULL) || (pulProblem ==
NULL))
3614 ulTransferLength =
sizeof(ulCapabilities);
3615 ulLength =
sizeof(ulCapabilities);
3620 (
PBYTE)&ulCapabilities,
3631 ulTransferLength =
sizeof(ulConfigFlags);
3632 ulLength =
sizeof(ulConfigFlags);
3637 (
PBYTE)&ulConfigFlags,
3667 ULONG ulOldStatus, ulOldProblem;
3672 DPRINT1(
"PNP_SetDeviceProblem(%p %S %lu 0x%08lx)\n",
3673 hBinding, pDeviceID, ulProblem, ulFlags);
3688 (ulOldProblem != 0) &&
3689 (ulOldProblem != ulProblem))
3724 DPRINT1(
"PNP_DisableDevInst(%p %S %p %p %lu 0x%08lx)\n",
3725 hBinding, pDeviceID, pVetoType, pszVetoName, ulNameLength, ulFlags);
3761 lpPtr = lpDeviceIdList;
3765 if (0 ==
_wcsicmp(lpPtr, lpDeviceId))
3783 dwLen =
wcslen(lpDeviceId);
3784 dwPos = (*lpDeviceIdListSize /
sizeof(
WCHAR)) - 1;
3786 wcscpy(&lpDeviceIdList[dwPos], lpDeviceId);
3788 dwPos += (dwLen + 1);
3790 lpDeviceIdList[dwPos] = 0;
3792 *lpDeviceIdListSize = dwPos *
sizeof(
WCHAR);
3808 DWORD dwDeviceIdListSize;
3809 DWORD dwNewDeviceIdSize;
3814 DPRINT(
"PNP_AddID(%p %S %S 0x%08lx)\n",
3815 hBinding, pszDeviceID, pszID, ulFlags);
3823 DPRINT(
"Failed to open the device key!\n");
3836 DPRINT(
"Failed to query the desired ID string!\n");
3841 dwNewDeviceIdSize =
lstrlenW(pszDeviceID);
3842 if (!dwNewDeviceIdSize)
3848 dwDeviceIdListSize += (dwNewDeviceIdSize + 2) *
sizeof(
WCHAR);
3851 if (!pszDeviceIdList)
3853 DPRINT(
"Failed to allocate memory for the desired ID string!\n");
3865 DPRINT(
"Failed to query the desired ID string!\n");
3873 DPRINT(
"Device ID was found in the ID string!\n");
3888 DPRINT(
"Failed to set the desired ID string!\n");
3894 if (pszDeviceIdList)
3897 DPRINT(
"PNP_AddID() done (returns %lx)\n",
ret);
3911 DPRINT(
"PNP_RegisterDriver(%p %S 0x%lx)\n",
3941 DPRINT1(
"PNP_QueryRemove(%p %S %p %p %lu 0x%lx)\n",
3942 hBinding, pszDeviceID, pVetoType, pszVetoName,
3943 ulNameLength, ulFlags);
3952 if (pVetoType !=
NULL)
3955 if (pszVetoName !=
NULL && ulNameLength > 0)
3961 PlugPlayData.
VetoName = pszVetoName;
3967 sizeof(PlugPlayData));
3990 DPRINT1(
"PNP_RequestDeviceEject(%p %S %p %p %lu 0x%lx)\n",
3991 hBinding, pszDeviceID, pVetoType, pszVetoName,
3992 ulNameLength, ulFlags);
4000 if (pVetoType !=
NULL)
4003 if (pszVetoName !=
NULL && ulNameLength > 0)
4009 PlugPlayData.
VetoName = pszVetoName;
4015 sizeof(PlugPlayData));
4038 DPRINT1(
"PNP_IsDockStationPresent(%p %p)\n",
4067 else if (dwValue != 0)
4073 DPRINT1(
"PNP_IsDockStationPresent() done (returns %lx)\n",
ret);
4103 szDockDeviceInstance,
4133 DPRINT(
"PNP_HwProfFlags() called\n");
4141 L"System\\CurrentControlSet\\HardwareProfiles\\Current\\System\\CurrentControlSet\\Enum");
4146 L"System\\CurrentControlSet\\HardwareProfiles\\%04lu\\System\\CurrentControlSet\\Enum",
4157 if (ulAction == PNP_GET_HWPROFFLAGS)
4183 else if (ulAction == PNP_SET_HWPROFFLAGS)
4202 DWORD ulProfileInfoSize,
4205 WCHAR szProfileName[5];
4209 DWORD dwDisposition;
4216 DPRINT(
"PNP_GetHwProfInfo() called\n");
4218 if (ulProfileInfoSize == 0)
4237 L"System\\CurrentControlSet\\Control\\IDConfigDB",
4253 L"Hardware Profiles",
4267 if (ulIndex == (
ULONG)-1)
4317 if (hKeyProfile !=
NULL)
4320 if (hKeyProfiles !=
NULL)
4323 if (hKeyConfig !=
NULL)
4337 DWORD *pulLogConfTag,
4341 DWORD RegDataType = 0;
4342 ULONG ulDataSize = 0, ulNewSize = 0;
4347 DPRINT(
"PNP_AddEmptyLogConf(%p %S %lu %p 0x%08lx)\n",
4348 hBinding, pDeviceID, ulPriority, pulLogConfTag, ulFlags);
4350 if (pulLogConfTag ==
NULL)
4366 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4391 if (pDataBuffer ==
NULL)
4398 pResourceList->
Count = 1;
4414 if (pDataBuffer ==
NULL)
4421 pRequirementsList->
ListSize = ulDataSize;
4430 pResourceList->
Count = 1;
4455 ulDataSize + ulNewSize);
4456 if (pDataBuffer ==
NULL)
4466 for (ulIndex = 0; ulIndex < pResourceList->
Count; ulIndex++)
4470 pResourceList->
Count++;
4477 *pulLogConfTag = ulIndex;
4490 ulDataSize + ulNewSize);
4491 if (pDataBuffer ==
NULL)
4502 pRequirementsList->
ListSize = ulDataSize + ulNewSize;
4507 pResourceList->
Count = 1;
4513 *pulLogConfTag = ulIndex;
4535 if (pDataBuffer !=
NULL)
4538 if (hConfigKey !=
NULL)
4541 DPRINT(
"PNP_AddEmptyLogConf() returns %lu\n",
ret);
4553 DWORD ulLogConfType,
4558 DWORD RegDataType = 0;
4559 ULONG ulDataSize = 0;
4564 DPRINT(
"PNP_FreeLogConf(%p %S %lu %lu 0x%08lx)\n",
4565 hBinding, pDeviceID, ulLogConfType, ulLogConfTag, ulFlags);
4578 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4600 if (pResourceList->
Count <= 1)
4603 DPRINT(
"Delete value %S\n", szValueNameBuffer);
4609 ULONG ulIndex, ulMoveSize;
4613 if (ulLogConfTag >= pResourceList->
Count)
4621 for (ulIndex = 0; ulIndex < ulLogConfTag; ulIndex++)
4625 if (ulLogConfTag == pResourceList->
Count - 1)
4635 MoveMemory(pResource, pNextResource, ulMoveSize);
4640 pResourceList->
Count--;
4661 DPRINT(
"Delete value %S\n", szValueNameBuffer);
4676 if (pDataBuffer !=
NULL)
4679 if (hConfigKey !=
NULL)
4682 DPRINT(
"PNP_FreeLogConf() returns %lu\n",
ret);
4694 DWORD ulLogConfType,
4695 DWORD *pulLogConfTag,
4699 DWORD RegDataType = 0;
4700 ULONG ulDataSize = 0;
4704 DPRINT(
"PNP_GetFirstLogConf(%p %S %lu %p 0x%08lx)\n",
4705 hBinding, pDeviceID, ulLogConfType, pulLogConfTag, ulFlags);
4707 if (pulLogConfTag ==
NULL)
4710 *pulLogConfTag = (
DWORD)0;
4723 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4737 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4742 DPRINT1(
"Data size %lu\n", ulDataSize);
4743 if (ulDataSize == 0 || lpData ==
NULL)
4745 DPRINT1(
"No config data available!\n");
4758 DPRINT1(
"No resource descriptors!\n");
4765 DPRINT(
"REG_RESOURCE_REQUIREMENTS_LIST->AlternativeLists %lu\n",
4780 if (hConfigKey !=
NULL)
4783 DPRINT(
"PNP_GetFirstLogConf() returns %lu\n",
ret);
4795 DWORD ulLogConfType,
4801 DWORD RegDataType = 0;
4802 ULONG ulDataSize = 0;
4806 DPRINT(
"PNP_GetNextLogConf(%p %S %lu %lu %p 0x%08lx)\n",
4807 hBinding, pDeviceID, ulLogConfType, ulCurrentTag, pulNextTag, ulFlags);
4809 if (pulNextTag ==
NULL)
4812 *pulNextTag = (
DWORD)0;
4825 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4839 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4844 DPRINT(
"Data size %lu\n", ulDataSize);
4846 if (ulDataSize == 0 || lpData ==
NULL)
4848 DPRINT1(
"No config data available!\n");
4874 DPRINT(
"REG_RESOURCE_REQUIREMENTS_LIST->AlternativeLists %lu\n",
4893 *pulNextTag = ulCurrentTag + 1;
4899 if (hConfigKey !=
NULL)
4902 DPRINT(
"PNP_GetNextLogConf() returns %lu\n",
ret);
4931 DWORD ulLogConfType,
4933 DWORD *pulResourceTag,
4950 DWORD ulLogConfType,
4952 DWORD ulResourceTag,
4953 DWORD *pulPreviousResType,
4954 DWORD *pulPreviousResTag,
4969 DWORD ulLogConfType,
4971 DWORD ulResourceTag,
4972 DWORD *pulNextResType,
4973 DWORD *pulNextResTag,
4977 DWORD RegDataType = 0;
4978 ULONG ulDataSize = 0;
4982 DPRINT1(
"PNP_GetNextResDes(%p %S 0x%lx %lu %lu %ul %p %p 0x%08lx)\n",
4983 hBinding, pDeviceID, ulLogConfTag, ulLogConfType, ResourceID,
4984 ulResourceTag, pulNextResType, pulNextResTag, ulFlags);
4986 if (pulNextResType ==
NULL)
4989 *pulNextResType = 0;
5002 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
5016 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
5021 DPRINT1(
"Data size %lu\n", ulDataSize);
5023 if (ulDataSize == 0 || lpData ==
NULL)
5025 DPRINT1(
"No config data available!\n");
5033 DPRINT1(
"FIXME: REG_RESOURCE_LIST\n");
5040 DPRINT1(
"FIXME: REG_RESOURCE_REQUIREMENTS_LIST\n");
5050 if (hConfigKey !=
NULL)
5053 DPRINT1(
"PNP_GetNextResDes() returns %lu\n",
ret);
5066 DWORD ulLogConfType,
5068 DWORD ulResourceTag,
5085 DWORD ulLogConfType,
5087 DWORD ulResourceTag,
5103 DWORD ulLogConfType,
5106 DWORD ulResourceTag,
5125 BOOL *pbConflictDetected,
5128 DPRINT(
"PNP_DetectResourceConflict()\n");
5130 if (pbConflictDetected !=
NULL)
5131 *pbConflictDetected =
FALSE;
5160 DWORD ulHardwareProfile,
5217 BYTE *pNotificationFilter,
5218 DWORD ulNotificationFilterSize,
5229 DPRINT1(
"PNP_RegisterNotification(%p %p '%S' %p %lu 0x%lx %p %lx %p)\n",
5230 hBinding, hRecipient, pszName, pNotificationFilter,
5231 ulNotificationFilterSize, ulFlags, pNotifyHandle, ulProcessId, pulUnknown9);
5233 if (pNotifyHandle ==
NULL)
5236 *pNotifyHandle =
NULL;
5238 if (pNotificationFilter ==
NULL ||
5239 pulUnknown9 ==
NULL)
5251 DPRINT1(
"DBT_DEVTYP_DEVICEINTERFACE\n");
5259 if (pNotifyData ==
NULL)
5267 if (pszName !=
NULL)
5281 if ((ulFlags & DEVICE_NOTIFY_SERVICE_HANDLE) == DEVICE_NOTIFY_WINDOW_HANDLE)
5287 DPRINT(
"Validate service: %S\n", pszName);
5292 DPRINT1(
"I_ScValidatePnpService failed!\n");
5300 pNotifyData->
ulFlags = ulFlags;
5302 if ((ulFlags & DEVICE_NOTIFY_ALL_INTERFACE_CLASSES) == 0)
5314 DPRINT(
"pNotifyData: %p\n", pNotifyData);
5319 DPRINT1(
"DBT_DEVTYP_HANDLE\n");
5329 if (ulFlags & DEVICE_NOTIFY_ALL_INTERFACE_CLASSES)
5368 DPRINT1(
"PNP_UnregisterNotification(%p %p)\n",
5382 *pNotifyHandle =
NULL;
5395 DWORD *pulRegDataType,
5408 DPRINT(
"PNP_GetCustomDevProp() called\n");
5410 if (pulTransferLen ==
NULL || pulLength ==
NULL)
5425 if (*pulLength < *pulTransferLen)
5426 *pulLength = *pulTransferLen;
5428 *pulTransferLen = 0;
5442 L"Device Parameters",
5473 *pulTransferLen = *pulLength;
5475 if (hParamKey !=
NULL)
5478 if (hDeviceKey !=
NULL)
5481 DPRINT(
"PNP_GetCustomDevProp() done (returns %lx)\n",
ret);
5521 DWORD *pulSSDIFlags,
5526 DPRINT1(
"PNP_GetServerSideDeviceInstallFlags(%p %p %lu)\n",
5529 if (pulSSDIFlags ==
NULL)
5549 LPWSTR PropertyCultureName,
5567 LPWSTR PropertyCultureName,
5587 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 PIO_RESOURCE_LIST NextResourceRequirement(_In_ PIO_RESOURCE_LIST pResourceList)
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
_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
@ PlugPlayControlDeviceClassAssociation
@ PlugPlayControlInitializeDevice
@ PlugPlayControlGetInterfaceDeviceList
@ PlugPlayControlStartDevice
@ PlugPlayControlGetInterfaceDeviceAlias
@ 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
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
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::@2226 u
struct _IO_RESOURCE_DESCRIPTOR::@2226::@2234 ConfigData
IO_RESOURCE_DESCRIPTOR Descriptors[1]
INTERFACE_TYPE InterfaceType
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
ULONG SymbolicLinkNameLength
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING DeviceInstance
UNICODE_STRING SymbolicLinkName
PWCHAR AliasSymbolicLinkName
ULONG AliasSymbolicLinkNameLength
GUID * AliasInterfaceClassGuid
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)
WINBASEAPI _In_ DWORD nLength
_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