53 DPRINT(
"RpcServerThread() called\n");
64 RegisteredProtSeq =
TRUE;
66 DPRINT1(
"RpcServerUseProtseqEpW() failed (Status %lx)\n",
Status);
75 RegisteredProtSeq =
TRUE;
77 DPRINT1(
"RpcServerUseProtseqEpW() failed (Status %lx)\n",
Status);
80 if (RegisteredProtSeq ==
FALSE)
88 DPRINT1(
"RpcServerRegisterIf() failed (Status %lx)\n",
Status);
102 DPRINT1(
"*** Other devices won't be installed correctly. If something\n");
103 DPRINT1(
"*** doesn't work, try to reboot to get a new chance.\n");
105 DPRINT(
"RpcServerThread() done\n");
164 wcscpy(szLocalDeviceInstanceID, pszDeviceInstanceID);
170 lpEnumerator = szLocalDeviceInstanceID;
186 if (lpEnumerator !=
NULL)
187 wcscpy(pszEnumerator, lpEnumerator);
189 if (lpDevice !=
NULL)
190 wcscpy(pszDevice, lpDevice);
192 if (lpInstance !=
NULL)
193 wcscpy(pszInstance, lpInstance);
208 DPRINT1(
"ClearDeviceStatus(%S 0x%lx 0x%lx)\n",
209 pszDeviceID, ulStatus, ulProblem);
218 (
PVOID)&PlugPlayData,
238 DPRINT(
"GetDeviceStatus(%S %p %p)\n",
239 pszDeviceID, pulStatus, pulProblem);
246 (
PVOID)&PlugPlayData,
273 DPRINT1(
"SetDeviceStatus(%S 0x%lx 0x%lx)\n",
274 pszDeviceID, ulStatus, ulProblem);
283 (
PVOID)&PlugPlayData,
304 DPRINT1(
"DisableDeviceInstance(%S %p %p %lu)\n",
305 pszDeviceInstance, pVetoType, pszVetoName, ulNameLength);
310 QueryRemoveData.
Flags = 0;
312 QueryRemoveData.
VetoName = pszVetoName;
324 if (pVetoType !=
NULL)
325 *pVetoType = QueryRemoveData.
VetoType;
343 INT nPartLength[3] = {0, 0, 0};
347 DPRINT(
"IsValidDeviceInstanceID(%S)\n",
348 pszDeviceInstanceID);
350 if (pszDeviceInstanceID ==
NULL)
352 DPRINT(
"Device instance ID is NULL!\n");
356 p = pszDeviceInstanceID;
364 DPRINT(
"Too many separators: %d\n", nParts);
370 nPartLength[nParts]++;
385 DPRINT(
"Invalid number of separtors: %d\n", nParts);
389 if ((nPartLength[0] == 0) ||
390 (nPartLength[1] == 0) ||
391 (nPartLength[2] == 0))
393 DPRINT(
"Invalid part lengths: %d %d %d\n",
394 nPartLength[0], nPartLength[1], nPartLength[2]);
398 DPRINT(
"Valid device instance ID!\n");
421 DWORD ulStatus, ulProblem;
440 wcscpy(szKeyName,
L"System\\CurrentControlSet\\Enum\\");
441 wcscat(szKeyName, pszDeviceID);
452 switch (ulLogConfType)
456 pszSubKeyName =
L"LogConf";
461 pszSubKeyName =
L"Control";
465 DPRINT1(
"Unsupported configuration type!\n");
503 switch (ulLogConfType)
506 pszValueName =
L"BootConfig";
511 pszValueName =
L"AllocConfig";
516 pszValueName =
L"ForcedConfig";
521 pszValueName =
L"FilteredConfigVector";
526 pszValueName =
L"BasicConfigVector";
531 pszValueName =
L"OverrideConfigVector";
536 DPRINT1(
"Unsupported configuration type!\n");
541 if ((ulValueNameBufferSize > 0) && (pszValueNameBuffer !=
NULL) &&
542 (
wcslen(pszValueName) + 1 <= ulValueNameBufferSize))
543 wcscpy(pszValueNameBuffer, pszValueName);
558 if (*ppBuffer ==
NULL)
584 ULONG ulLastIndex = 0;
586 if (pDescriptor ==
NULL)
593 pNext += (pDescriptor->PartialResourceList.Count - 1) *
597 if (pDescriptor->PartialResourceList.Count > 0)
599 ulLastIndex = pDescriptor->PartialResourceList.Count - 1;
601 if (pDescriptor->PartialResourceList.PartialDescriptors[ulLastIndex].Type ==
604 pNext += pDescriptor->PartialResourceList.PartialDescriptors[ulLastIndex].
605 u.DeviceSpecificData.DataSize;
633 DPRINT1(
"AllocateAndInitializeSid failed\n");
641 DPRINT1(
"RpcImpersonateClient failed (Status 0x%08lx)\n", RpcStatus);
668 DPRINT1(
"PNP_NOTIFY_HANDLE_rundown(%p)\n", pHandle);
705 DPRINT(
"PNP_GetVersion(%p %p)\n",
724 DPRINT(
"PNP_GetGlobalState(%p %p 0x%08lx)\n",
747 DPRINT(
"PNP_InitDetection(%p)\n",
767 DPRINT(
"PNP_ReportLogOn(%p %u, %u)\n",
823 DPRINT(
"PNP_ValidateDeviceInstance(%p %S 0x%08lx)\n",
835 DPRINT(
"Could not open the Device Key!\n");
843 if (hDeviceKey !=
NULL)
846 DPRINT(
"PNP_ValidateDeviceInstance() done (returns %lx)\n",
ret);
864 DPRINT(
"PNP_GetRootDeviceInstance(%p %S %lu)\n",
883 DPRINT(
"PNP_GetRootDeviceInstance() done (returns %lx)\n",
ret);
894 DWORD ulRelationship,
907 DPRINT(
"PNP_GetRelatedDeviceInstance(%p %lu %S %p %p 0x%lx)\n",
908 hBinding, ulRelationship, pDeviceID, pRelatedDeviceId,
914 if (ulRelationship == PNP_GET_PARENT_DEVICE_INSTANCE)
934 else if (ulRelationship == PNP_GET_SIBLING_DEVICE_INSTANCE)
944 PlugPlayData.
Relation = ulRelationship;
950 (
PVOID)&PlugPlayData,
957 DPRINT(
"PNP_GetRelatedDeviceInstance() done (returns %lx)\n",
ret);
986 DPRINT(
"PNP_EnumerateSubKeys(%p %lu %lu %p %lu %p 0x%08lx)\n",
988 pulRequiredLen, ulFlags);
992 case PNP_ENUMERATOR_SUBKEYS:
996 case PNP_CLASS_SUBKEYS:
1004 *pulRequiredLen = ulLength;
1019 (*pulRequiredLen)++;
1022 DPRINT(
"PNP_EnumerateSubKeys() done (returns %lx)\n",
ret);
1061 PlugPlayData.
Buffer = pszBuffer;
1064 (
PVOID)&PlugPlayData,
1086 WCHAR szPathBuffer[512];
1089 DWORD dwValues,
dwSize, dwIndex, dwUsedLength, dwPathLength;
1096 L"System\\CurrentControlSet\\Services",
1102 DPRINT(
"Failed to open the services key (Error %lu)\n", dwError);
1113 DPRINT(
"Failed to open the service key (Error %lu)\n", dwError);
1125 DPRINT(
"Failed to open the service enum key (Error %lu)\n", dwError);
1140 DPRINT(
"RegQueryValueExW failed (Error %lu)\n", dwError);
1144 DPRINT(
"dwValues %lu\n", dwValues);
1149 for (dwIndex = 0; dwIndex < dwValues; dwIndex++)
1153 dwSize =
sizeof(szPathBuffer);
1163 DPRINT(
"Path: %S\n", szPathBuffer);
1165 dwPathLength =
wcslen(szPathBuffer) + 1;
1166 if (dwUsedLength + dwPathLength + 1 > *pulLength)
1172 wcscpy(pPtr, szPathBuffer);
1173 dwUsedLength += dwPathLength;
1174 pPtr += dwPathLength;
1183 if (hServiceKey !=
NULL)
1190 *pulLength = dwUsedLength + 1;
1206 WCHAR szPathBuffer[512];
1208 DWORD dwInstanceLength, dwPathLength, dwUsedLength;
1209 DWORD dwIndex, dwError;
1221 DPRINT(
"Failed to open the device key (Error %lu)\n", dwError);
1228 for (dwIndex = 0; ; dwIndex++)
1242 wsprintf(szPathBuffer,
L"%s\\%s", pszDevice, szInstanceBuffer);
1243 DPRINT(
"Path: %S\n", szPathBuffer);
1245 dwPathLength =
wcslen(szPathBuffer) + 1;
1246 if (dwUsedLength + dwPathLength + 1 > *pulLength)
1252 wcscpy(pPtr, szPathBuffer);
1253 dwUsedLength += dwPathLength;
1254 pPtr += dwPathLength;
1262 *pulLength = dwUsedLength + 1;
1277 WCHAR szPathBuffer[512];
1278 HKEY hEnumeratorKey;
1280 DWORD dwIndex, dwDeviceLength, dwUsedLength, dwRemainingLength, dwPathLength;
1292 DPRINT(
"Failed to open the enumerator key (Error %lu)\n", dwError);
1297 dwRemainingLength = *pulLength;
1300 for (dwIndex = 0; ; dwIndex++)
1314 wsprintf(szPathBuffer,
L"%s\\%s", pszEnumerator, szDeviceBuffer);
1315 DPRINT(
"Path: %S\n", szPathBuffer);
1317 dwPathLength = dwRemainingLength;
1324 dwUsedLength += dwPathLength - 1;
1325 dwRemainingLength -= dwPathLength - 1;
1326 pPtr += dwPathLength - 1;
1332 *pulLength = dwUsedLength + 1;
1348 DWORD dwIndex, dwEnumeratorLength, dwUsedLength, dwRemainingLength, dwPathLength;
1353 dwRemainingLength = *pulLength;
1356 for (dwIndex = 0; ; dwIndex++)
1362 &dwEnumeratorLength,
1367 dwPathLength = dwRemainingLength;
1374 dwUsedLength += dwPathLength - 1;
1375 dwRemainingLength -= dwPathLength - 1;
1376 pPtr += dwPathLength - 1;
1380 *pulLength = dwUsedLength + 1;
1403 DPRINT(
"PNP_GetDeviceList(%p %S %p %p 0x%08lx)\n",
1409 if (pulLength ==
NULL)
1413 (pszFilter ==
NULL))
1498 (
PVOID)&PlugPlayData,
1526 L"System\\CurrentControlSet\\Services",
1532 DPRINT(
"Failed to open the services key (Error %lu)\n", dwError);
1543 DPRINT(
"Failed to open the service key (Error %lu)\n", dwError);
1555 DPRINT(
"Failed to open the service enum key (Error %lu)\n", dwError);
1570 DPRINT(
"RegQueryValueExW failed (Error %lu)\n", dwError);
1589 DPRINT(
"RegQueryInfoKeyW failed (Error %lu)\n", dwError);
1593 DPRINT(
"dwValues %lu dwMaxValueLength %lu\n", dwValues, dwMaxValueLength /
sizeof(
WCHAR));
1596 *pulLength = dwValues * dwMaxValueLength /
sizeof(
WCHAR) + 2;
1602 if (hServiceKey !=
NULL)
1619 DWORD dwSubKeys, dwMaxSubKeyLength;
1630 DPRINT(
"Failed to open the device key (Error %lu)\n", dwError);
1649 DPRINT(
"RegQueryInfoKeyW failed (Error %lu)\n", dwError);
1651 dwMaxSubKeyLength = 0;
1658 *pulLength = dwSubKeys * (
wcslen(pszDevice) + 1 + dwMaxSubKeyLength + 1);
1671 WCHAR szPathBuffer[512];
1672 HKEY hEnumeratorKey;
1673 DWORD dwIndex, dwDeviceLength, dwBufferLength;
1687 DPRINT(
"Failed to open the enumerator key (Error %lu)\n", dwError);
1691 for (dwIndex = 0; ; dwIndex++)
1705 wsprintf(szPathBuffer,
L"%s\\%s", pszEnumerator, szDeviceBuffer);
1706 DPRINT(
"Path: %S\n", szPathBuffer);
1715 *pulLength += dwBufferLength;
1731 DWORD dwIndex, dwEnumeratorLength, dwBufferLength;
1735 for (dwIndex = 0; ; dwIndex++)
1741 &dwEnumeratorLength,
1752 *pulLength += dwBufferLength;
1773 DPRINT(
"PNP_GetDeviceListSize(%p %S %p 0x%08lx)\n",
1774 hBinding, pszFilter, pulLength, ulFlags);
1779 if (pulLength ==
NULL)
1783 (pszFilter ==
NULL))
1850 DPRINT(
"PNP_GetDepth(%p %S %p 0x%08lx)\n",
1851 hBinding, pszDeviceID, pulDepth, ulFlags);
1860 (
PVOID)&PlugPlayData,
1864 *pulDepth = PlugPlayData.
Depth;
1871 DPRINT(
"PNP_GetDepth() done (returns %lx)\n",
ret);
1884 DWORD *pulRegDataType,
1899 DPRINT(
"PNP_GetDeviceRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
1901 pulTransferLen, pulLength, ulFlags);
1903 if (pulTransferLen ==
NULL || pulLength ==
NULL)
1922 if (*pulLength < *pulTransferLen)
1923 *pulLength = *pulTransferLen;
1925 *pulTransferLen = 0;
1930 lpValueName =
L"DeviceDesc";
1934 lpValueName =
L"HardwareID";
1938 lpValueName =
L"CompatibleIDs";
1942 lpValueName =
L"Service";
1946 lpValueName =
L"Class";
1950 lpValueName =
L"ClassGUID";
1954 lpValueName =
L"Driver";
1958 lpValueName =
L"ConfigFlags";
1962 lpValueName =
L"Mfg";
1966 lpValueName =
L"FriendlyName";
1970 lpValueName =
L"LocationInformation";
1975 *pulRegDataType =
REG_SZ;
1979 lpValueName =
L"Capabilities";
1987 lpValueName =
L"UpperFilters";
1991 lpValueName =
L"LowerFilters";
2011 *pulRegDataType =
REG_SZ;
2015 lpValueName =
L"Security";
2019 lpValueName =
L"DeviceType";
2023 lpValueName =
L"Exclusive";
2027 lpValueName =
L"DeviceCharacteristics";
2036 lpValueName =
L"UINumberDescFormat";
2055 lpValueName =
L"RemovalPolicy";
2064#if (WINVER >= _WIN32_WINNT_WS03)
2071#if (WINVER >= _WIN32_WINNT_WIN7)
2074 *pulRegDataType =
REG_SZ;
2083 DPRINT(
"Value name: %S\n", lpValueName);
2129 (
PVOID)&PlugPlayData,
2133 *pulLength = PlugPlayData.BufferSize;
2148 DPRINT(
"PNP_GetDeviceRegProp() done (returns %lx)\n",
ret);
2173 DPRINT(
"PNP_SetDeviceRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
2183 lpValueName =
L"DeviceDesc";
2187 lpValueName =
L"HardwareID";
2191 lpValueName =
L"CompatibleIDs";
2195 lpValueName =
L"Service";
2199 lpValueName =
L"Class";
2203 lpValueName =
L"ClassGUID";
2207 lpValueName =
L"Driver";
2211 lpValueName =
L"ConfigFlags";
2215 lpValueName =
L"Mfg";
2219 lpValueName =
L"FriendlyName";
2223 lpValueName =
L"LocationInformation";
2227 lpValueName =
L"UpperFilters";
2231 lpValueName =
L"LowerFilters";
2235 lpValueName =
L"Security";
2239 lpValueName =
L"DeviceType";
2243 lpValueName =
L"Exclusive";
2247 lpValueName =
L"DeviceCharacteristics";
2251 lpValueName =
L"UINumberDescFormat";
2255 lpValueName =
L"RemovalPolicy";
2262 DPRINT(
"Value name: %S\n", lpValueName);
2290 DPRINT(
"PNP_SetDeviceRegProp() done (returns %lx)\n",
ret);
2305 WCHAR szClassGuid[40];
2306 WCHAR szClassInstance[5];
2308 HKEY hClassInstanceKey;
2309 ULONG ulTransferLength, ulDataLength;
2310 DWORD dwDataType, dwDisposition,
i;
2314 DPRINT(
"PNP_GetClassInstance(%p %S %p %lu)\n",
2315 hBinding, pDeviceId, pszClassInstance, ulLength);
2320 ulTransferLength = ulLength;
2325 (
BYTE *)pszClassInstance,
2332 ulTransferLength =
sizeof(szClassGuid);
2333 ulDataLength =
sizeof(szClassGuid);
2338 (
BYTE *)szClassGuid,
2344 DPRINT1(
"PNP_GetDeviceRegProp() failed (Error %lu)\n",
ret);
2355 DPRINT1(
"RegOpenKeyExW() failed (Error %lu)\n", dwError);
2360 for (
i = 0;
i < 10000;
i++)
2384 ulDataLength = (
wcslen(pszClassInstance) + 1) *
sizeof(
WCHAR);
2389 (
BYTE *)pszClassInstance,
2394 DPRINT1(
"PNP_SetDeviceRegProp() failed (Error %lu)\n",
ret);
2405 if (hDeviceClassKey !=
NULL)
2428 DPRINT(
"PNP_CreateKey(%p %S 0x%lx 0x%08lx)\n",
2429 hBinding, pszSubKey, samDesired, ulFlags);
2449 L"Device Parameters",
2466 if (hParametersKey !=
NULL)
2469 if (hDeviceKey !=
NULL)
2496 DWORD *pulClassCount,
2505 DPRINT(
"PNP_GetClassCount(%p %p 0x%08lx)\n",
2554 DPRINT(
"PNP_GetClassName(%p %S %p %p 0x%08lx)\n",
2557 lstrcpyW(szKeyName,
L"System\\CurrentControlSet\\Control\\Class\\");
2588 DPRINT(
"PNP_GetClassName() done (returns %lx)\n",
ret);
2606 DPRINT(
"PNP_DeleteClassKey(%p %S 0x%08lx)\n",
2620 DPRINT(
"PNP_DeleteClassKey() done (returns %lx)\n",
ret);
2631 LPWSTR pszInterfaceDevice,
2632 GUID *AliasInterfaceGuid,
2633 LPWSTR pszAliasInterfaceDevice,
2660 DPRINT(
"PNP_GetInterfaceDeviceList(%p %p %S %p %p 0x%08lx)\n",
2669 PlugPlayData.
Flags = ulFlags;
2675 (
PVOID)&PlugPlayData,
2686 DPRINT(
"PNP_GetInterfaceDeviceList() done (returns %lx)\n",
ret);
2707 DPRINT(
"PNP_GetInterfaceDeviceListSize(%p %p %p %S 0x%08lx)\n",
2719 PlugPlayData.
Flags = ulFlags;
2722 (
PVOID)&PlugPlayData,
2733 DPRINT(
"PNP_GetInterfaceDeviceListSize() done (returns %lx)\n",
ret);
2761 LPWSTR pszInterfaceDevice,
2776 DWORD *pulRegDataType,
2790 DPRINT(
"PNP_GetClassRegProp(%p %S %lu %p %p %p %p 0x%08lx)\n",
2791 hBinding, pszClassGuid, ulProperty, pulRegDataType,
2792 Buffer, pulTransferLen, pulLength, ulFlags);
2794 if (pulTransferLen ==
NULL || pulLength ==
NULL)
2806 if (*pulLength < *pulTransferLen)
2807 *pulLength = *pulTransferLen;
2809 *pulTransferLen = 0;
2814 lpValueName =
L"Security";
2818 lpValueName =
L"DeviceType";
2822 lpValueName =
L"Exclusive";
2826 lpValueName =
L"DeviceCharacteristics";
2834 DPRINT(
"Value name: %S\n", lpValueName);
2881 *pulTransferLen = *pulLength;
2883 if (hPropKey !=
NULL)
2886 if (hInstKey !=
NULL)
2889 DPRINT(
"PNP_GetClassRegProp() done (returns %lx)\n",
ret);
2915 DPRINT(
"PNP_SetClassRegProp(%p %S %lu %lu %p %lu 0x%08lx)\n",
2916 hBinding, pszClassGuid, ulProperty, ulDataType,
2917 Buffer, ulLength, ulFlags);
2925 lpValueName =
L"Security";
2929 lpValueName =
L"DeviceType";
2933 lpValueName =
L"Exclusive";
2937 lpValueName =
L"DeviceCharacteristics";
2989 if (hPropKey !=
NULL)
2992 if (hInstKey !=
NULL)
3008 HKEY hKeyEnumerator;
3062 DPRINT1(
"Instance %S already exists!\n", szInstance);
3089 DWORD dwPhantomValue = 1;
3094 (
PBYTE)&dwPhantomValue,
3095 sizeof(dwPhantomValue));
3127 DWORD dwInstanceNumber;
3136 dwInstanceNumber = 0;
3139 if (dwInstanceNumber >= 10000)
3142 swprintf(szGeneratedInstance,
L"Root\\%ls\\%04lu",
3143 pszDeviceID, dwInstanceNumber);
3155 if (
wcslen(szGeneratedInstance) > ulLength)
3161 wcscpy(pszDeviceID, szGeneratedInstance);
3174 LPWSTR pszParentDeviceID,
3184 DPRINT(
"PNP_CreateDevInst(%p %S %S %lu 0x%08lx)\n",
3185 hBinding, pszParentDeviceID, pszDeviceID, ulLength, ulFlags);
3190 if (pszDeviceID ==
NULL || pszParentDeviceID ==
NULL)
3243 sizeof(ControlData));
3266 DPRINT(
"PNP_CreateDevInst() done (returns %lx)\n",
ret);
3280 DWORD ulStatus, ulProblem;
3285 DPRINT1(
"SetupDeviceInstance(%S 0x%08lx)\n",
3286 pszDeviceInstance, ulMinorAction);
3306 dwSize =
sizeof(dwDisableCount);
3314 (dwDisableCount > 0))
3348 if (hDeviceKey !=
NULL)
3363 DPRINT(
"Enable device instance %S\n", pszDeviceInstance);
3383 DPRINT1(
"ReenumerateDeviceInstance(%S 0x%08lx)\n",
3384 pszDeviceInstance, ulMinorAction);
3391 DPRINT1(
"CM_REENUMERATE_RETRY_INSTALLATION not implemented!\n");
3396 EnumerateDeviceData.
Flags = 0;
3399 &EnumerateDeviceData,
3413 DWORD ulMajorAction,
3414 DWORD ulMinorAction,
3415 LPWSTR pszDeviceInstance1,
3416 LPWSTR pszDeviceInstance2)
3422 DPRINT(
"PNP_DeviceInstanceAction(%p %lu 0x%08lx %S %S)\n",
3423 hBinding, ulMajorAction, ulMinorAction,
3424 pszDeviceInstance1, pszDeviceInstance2);
3426 switch (ulMajorAction)
3428 case PNP_DEVINST_SETUP:
3433 case PNP_DEVINST_ENABLE:
3437 case PNP_DEVINST_REENUMERATE:
3443 DPRINT1(
"Unknown device action %lu: not implemented\n", ulMajorAction);
3447 DPRINT(
"PNP_DeviceInstanceAction() done (returns %lx)\n",
ret);
3463 DWORD ulDataType, ulTransferLength, ulLength;
3464 DWORD ulCapabilities, ulConfigFlags;
3470 DPRINT(
"PNP_GetDeviceStatus(%p %S %p %p 0x%08lx)\n",
3471 hBinding, pDeviceID, pulStatus, pulProblem, ulFlags);
3476 if ((pulStatus ==
NULL) || (pulProblem ==
NULL))
3487 ulTransferLength =
sizeof(ulCapabilities);
3488 ulLength =
sizeof(ulCapabilities);
3493 (
PBYTE)&ulCapabilities,
3504 ulTransferLength =
sizeof(ulConfigFlags);
3505 ulLength =
sizeof(ulConfigFlags);
3510 (
PBYTE)&ulConfigFlags,
3540 ULONG ulOldStatus, ulOldProblem;
3545 DPRINT1(
"PNP_SetDeviceProblem(%p %S %lu 0x%08lx)\n",
3546 hBinding, pDeviceID, ulProblem, ulFlags);
3561 (ulOldProblem != 0) &&
3562 (ulOldProblem != ulProblem))
3597 DPRINT1(
"PNP_DisableDevInst(%p %S %p %p %lu 0x%08lx)\n",
3598 hBinding, pDeviceID, pVetoType, pszVetoName, ulNameLength, ulFlags);
3634 lpPtr = lpDeviceIdList;
3638 if (0 ==
_wcsicmp(lpPtr, lpDeviceId))
3656 dwLen =
wcslen(lpDeviceId);
3657 dwPos = (*lpDeviceIdListSize /
sizeof(
WCHAR)) - 1;
3659 wcscpy(&lpDeviceIdList[dwPos], lpDeviceId);
3661 dwPos += (dwLen + 1);
3663 lpDeviceIdList[dwPos] = 0;
3665 *lpDeviceIdListSize = dwPos *
sizeof(
WCHAR);
3681 DWORD dwDeviceIdListSize;
3682 DWORD dwNewDeviceIdSize;
3687 DPRINT(
"PNP_AddID(%p %S %S 0x%08lx)\n",
3688 hBinding, pszDeviceID, pszID, ulFlags);
3696 DPRINT(
"Failed to open the device key!\n");
3709 DPRINT(
"Failed to query the desired ID string!\n");
3714 dwNewDeviceIdSize =
lstrlenW(pszDeviceID);
3715 if (!dwNewDeviceIdSize)
3721 dwDeviceIdListSize += (dwNewDeviceIdSize + 2) *
sizeof(
WCHAR);
3724 if (!pszDeviceIdList)
3726 DPRINT(
"Failed to allocate memory for the desired ID string!\n");
3738 DPRINT(
"Failed to query the desired ID string!\n");
3746 DPRINT(
"Device ID was found in the ID string!\n");
3761 DPRINT(
"Failed to set the desired ID string!\n");
3767 if (pszDeviceIdList)
3770 DPRINT(
"PNP_AddID() done (returns %lx)\n",
ret);
3784 DPRINT(
"PNP_RegisterDriver(%p %S 0x%lx)\n",
3814 DPRINT1(
"PNP_QueryRemove(%p %S %p %p %lu 0x%lx)\n",
3815 hBinding, pszDeviceID, pVetoType, pszVetoName,
3816 ulNameLength, ulFlags);
3825 if (pVetoType !=
NULL)
3828 if (pszVetoName !=
NULL && ulNameLength > 0)
3834 PlugPlayData.
VetoName = pszVetoName;
3840 sizeof(PlugPlayData));
3863 DPRINT1(
"PNP_RequestDeviceEject(%p %S %p %p %lu 0x%lx)\n",
3864 hBinding, pszDeviceID, pVetoType, pszVetoName,
3865 ulNameLength, ulFlags);
3873 if (pVetoType !=
NULL)
3876 if (pszVetoName !=
NULL && ulNameLength > 0)
3882 PlugPlayData.
VetoName = pszVetoName;
3888 sizeof(PlugPlayData));
3911 DPRINT1(
"PNP_IsDockStationPresent(%p %p)\n",
3940 else if (dwValue != 0)
3946 DPRINT1(
"PNP_IsDockStationPresent() done (returns %lx)\n",
ret);
3976 szDockDeviceInstance,
4006 DPRINT(
"PNP_HwProfFlags() called\n");
4014 L"System\\CurrentControlSet\\HardwareProfiles\\Current\\System\\CurrentControlSet\\Enum");
4019 L"System\\CurrentControlSet\\HardwareProfiles\\%04lu\\System\\CurrentControlSet\\Enum",
4030 if (ulAction == PNP_GET_HWPROFFLAGS)
4056 else if (ulAction == PNP_SET_HWPROFFLAGS)
4075 DWORD ulProfileInfoSize,
4078 WCHAR szProfileName[5];
4082 DWORD dwDisposition;
4089 DPRINT(
"PNP_GetHwProfInfo() called\n");
4091 if (ulProfileInfoSize == 0)
4110 L"System\\CurrentControlSet\\Control\\IDConfigDB",
4126 L"Hardware Profiles",
4140 if (ulIndex == (
ULONG)-1)
4190 if (hKeyProfile !=
NULL)
4193 if (hKeyProfiles !=
NULL)
4196 if (hKeyConfig !=
NULL)
4210 DWORD *pulLogConfTag,
4214 DWORD RegDataType = 0;
4215 ULONG ulDataSize = 0, ulNewSize = 0;
4220 DPRINT(
"PNP_AddEmptyLogConf(%p %S %lu %p 0x%08lx)\n",
4221 hBinding, pDeviceID, ulPriority, pulLogConfTag, ulFlags);
4223 if (pulLogConfTag ==
NULL)
4239 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4264 if (pDataBuffer ==
NULL)
4271 pResourceList->
Count = 1;
4287 if (pDataBuffer ==
NULL)
4294 pRequirementsList->
ListSize = ulDataSize;
4303 pResourceList->
Count = 1;
4328 ulDataSize + ulNewSize);
4329 if (pDataBuffer ==
NULL)
4339 for (ulIndex = 0; ulIndex < pResourceList->
Count; ulIndex++)
4343 pResourceList->
Count++;
4350 *pulLogConfTag = ulIndex;
4376 if (pDataBuffer !=
NULL)
4379 if (hConfigKey !=
NULL)
4382 DPRINT(
"PNP_AddEmptyLogConf() returns %lu\n",
ret);
4394 DWORD ulLogConfType,
4399 DWORD RegDataType = 0;
4400 ULONG ulDataSize = 0;
4405 DPRINT(
"PNP_FreeLogConf(%p %S %lu %lu 0x%08lx)\n",
4406 hBinding, pDeviceID, ulLogConfType, ulLogConfTag, ulFlags);
4419 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4442 DPRINT(
"Delete value %S\n", szValueNameBuffer);
4455 DPRINT(
"Delete value %S\n", szValueNameBuffer);
4470 if (pDataBuffer !=
NULL)
4473 if (hConfigKey !=
NULL)
4476 DPRINT(
"PNP_FreeLogConf() returns %lu\n",
ret);
4488 DWORD ulLogConfType,
4489 DWORD *pulLogConfTag,
4493 DWORD RegDataType = 0;
4494 ULONG ulDataSize = 0;
4498 DPRINT(
"PNP_GetFirstLogConf(%p %S %lu %p 0x%08lx)\n",
4499 hBinding, pDeviceID, ulLogConfType, pulLogConfTag, ulFlags);
4501 if (pulLogConfTag ==
NULL)
4504 *pulLogConfTag = (
DWORD)0;
4517 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4531 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4536 DPRINT1(
"Data size %lu\n", ulDataSize);
4537 if (ulDataSize == 0 || lpData ==
NULL)
4539 DPRINT1(
"No config data available!\n");
4552 DPRINT1(
"No resource descriptors!\n");
4559 DPRINT(
"REG_RESOURCE_REQUIREMENTS_LIST->AlternativeLists %lu\n",
4574 if (hConfigKey !=
NULL)
4577 DPRINT(
"PNP_GetFirstLogConf() returns %lu\n",
ret);
4589 DWORD ulLogConfType,
4595 DWORD RegDataType = 0;
4596 ULONG ulDataSize = 0;
4600 DPRINT(
"PNP_GetNextLogConf(%p %S %lu %ul %p 0x%08lx)\n",
4601 hBinding, pDeviceID, ulLogConfType, ulCurrentTag, pulNextTag, ulFlags);
4603 if (pulNextTag ==
NULL)
4606 *pulNextTag = (
DWORD)0;
4619 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4633 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4638 DPRINT(
"Data size %lu\n", ulDataSize);
4640 if (ulDataSize == 0 || lpData ==
NULL)
4642 DPRINT1(
"No config data available!\n");
4668 DPRINT(
"REG_RESOURCE_REQUIREMENTS_LIST->AlternativeLists %lu\n",
4687 *pulNextTag = ulCurrentTag + 1;
4693 if (hConfigKey !=
NULL)
4696 DPRINT(
"PNP_GetNextLogConf() returns %lu\n",
ret);
4725 DWORD ulLogConfType,
4727 DWORD *pulResourceTag,
4744 DWORD ulLogConfType,
4746 DWORD ulResourceTag,
4747 DWORD *pulPreviousResType,
4748 DWORD *pulPreviousResTag,
4763 DWORD ulLogConfType,
4765 DWORD ulResourceTag,
4766 DWORD *pulNextResType,
4767 DWORD *pulNextResTag,
4771 DWORD RegDataType = 0;
4772 ULONG ulDataSize = 0;
4776 DPRINT1(
"PNP_GetNextResDes(%p %S 0x%lx %lu %lu %ul %p %p 0x%08lx)\n",
4777 hBinding, pDeviceID, ulLogConfTag, ulLogConfType, ResourceID,
4778 ulResourceTag, pulNextResType, pulNextResTag, ulFlags);
4780 if (pulNextResType ==
NULL)
4783 *pulNextResType = 0;
4796 DPRINT1(
"OpenConfigurationKey() failed (Error %lu)\n",
ret);
4810 DPRINT1(
"GetConfigurationData() failed (Error %lu)\n",
ret);
4815 DPRINT1(
"Data size %lu\n", ulDataSize);
4817 if (ulDataSize == 0 || lpData ==
NULL)
4819 DPRINT1(
"No config data available!\n");
4827 DPRINT1(
"FIXME: REG_RESOURCE_LIST\n");
4834 DPRINT1(
"FIXME: REG_RESOURCE_REQUIREMENTS_LIST\n");
4844 if (hConfigKey !=
NULL)
4847 DPRINT1(
"PNP_GetNextResDes() returns %lu\n",
ret);
4860 DWORD ulLogConfType,
4862 DWORD ulResourceTag,
4879 DWORD ulLogConfType,
4881 DWORD ulResourceTag,
4897 DWORD ulLogConfType,
4900 DWORD ulResourceTag,
4919 BOOL *pbConflictDetected,
4922 DPRINT(
"PNP_DetectResourceConflict()\n");
4924 if (pbConflictDetected !=
NULL)
4925 *pbConflictDetected =
FALSE;
4954 DWORD ulHardwareProfile,
5011 BYTE *pNotificationFilter,
5012 DWORD ulNotificationFilterSize,
5022 DPRINT1(
"PNP_RegisterNotification(%p %p '%S' %p %lu 0x%lx %p %lx %p)\n",
5023 hBinding, hRecipient, pszName, pNotificationFilter,
5024 ulNotificationFilterSize, ulFlags, pNotifyHandle, ulProcessId, pulUnknown9);
5026 if (pNotifyHandle ==
NULL)
5029 *pNotifyHandle =
NULL;
5031 if (pNotificationFilter ==
NULL ||
5032 pulUnknown9 ==
NULL)
5044 DPRINT1(
"DBT_DEVTYP_DEVICEINTERFACE\n");
5052 if (pNotifyData ==
NULL)
5055 if (pszName !=
NULL)
5070 DPRINT(
"pNotifyData: %p\n", pNotifyData);
5075 DPRINT1(
"DBT_DEVTYP_HANDLE\n");
5082 if (ulFlags & DEVICE_NOTIFY_ALL_INTERFACE_CLASSES)
5104 DPRINT1(
"PNP_UnregisterNotification(%p %p)\n",
5115 *pNotifyHandle =
NULL;
5128 DWORD *pulRegDataType,
5141 DPRINT(
"PNP_GetCustomDevProp() called\n");
5143 if (pulTransferLen ==
NULL || pulLength ==
NULL)
5158 if (*pulLength < *pulTransferLen)
5159 *pulLength = *pulTransferLen;
5161 *pulTransferLen = 0;
5175 L"Device Parameters",
5206 *pulTransferLen = *pulLength;
5208 if (hParamKey !=
NULL)
5211 if (hDeviceKey !=
NULL)
5214 DPRINT(
"PNP_GetCustomDevProp() done (returns %lx)\n",
ret);
5254 DWORD *pulSSDIFlags,
5259 DPRINT1(
"PNP_GetServerSideDeviceInstallFlags(%p %p %lu)\n",
5262 if (pulSSDIFlags ==
NULL)
5282 LPWSTR PropertyCultureName,
5300 LPWSTR PropertyCultureName,
5320 LPWSTR PropertyCultureName,
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)
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 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
#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)
_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::@2131 u
struct _IO_RESOURCE_DESCRIPTOR::@2131::@2139 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