The Plug and Play service runs one RPC service, pnp:
Z:\>ifids -p ncalrpc -e ntsvcs serveur Interfaces: 7 [...] 8d9f4e40-a03d-11ce-8f69-08003e30051b v1.0 Z:\>ifids -p ncacn_np -e \pipe\ntsvcs \\. Interfaces: 7 [...] 8d9f4e40-a03d-11ce-8f69-08003e30051b v1.0
Before Windows Vista, the \pipe\ntsvcs named pipe endpoint is usually used to reach the pnp interface.
In Windows Vista, a dedicated named pipe, plugplay was introduced.
C:\Users\>ifids -p ncacn_np -e \pipe\plugplay \\. Interfaces: 3 8d9f4e40-a03d-11ce-8f69-08003e30051b v1.0 [...]
Table 4.21. pnp operations
| Interface | Operation number | Operation name |
|---|---|---|
| 8d9f4e40-a03d-11ce-8f69-08003e30051b v1.0: pnp | ||
| 0x00 | PNP_Disconnect | |
| 0x01 | PNP_Connect | |
| 0x02 | PNP_GetVersion | |
| 0x03 | PNP_GetGlobalState | |
| 0x04 | PNP_InitDetection | |
| 0x05 | PNP_ReportLogOn | |
| 0x06 | PNP_ValidateDeviceInstance | |
| 0x07 | PNP_GetRootDeviceInstance | |
| 0x08 | PNP_GetRelatedDeviceInstance | |
| 0x09 | PNP_EnumerateSubKeys | |
| 0x0a | PNP_GetDeviceList | |
| 0x0b | PNP_GetDeviceListSize | |
| 0x0c | PNP_GetDepth | |
| 0x0d | PNP_GetDeviceRegProp | |
| 0x0e | PNP_SetDeviceRegProp | |
| 0x0f | PNP_GetClassInstance | |
| 0x10 | PNP_CreateKey | |
| 0x11 | PNP_DeleteRegistryKey | |
| 0x12 | PNP_GetClassCount | |
| 0x13 | PNP_GetClassName | |
| 0x14 | PNP_DeleteClassKey | |
| 0x15 | PNP_GetInterfaceDeviceAlias | |
| 0x16 | PNP_GetInterfaceDeviceList | |
| 0x17 | PNP_GetInterfaceDeviceListSize | |
| 0x18 | PNP_RegisterDeviceClassAssociation | |
| 0x19 | PNP_UnregisterDeviceClassAssociation | |
| 0x1a | PNP_GetClassRegProp | |
| 0x1b | PNP_SetClassRegProp | |
| 0x1c | PNP_CreateDevInst | |
| 0x1d | PNP_DeviceInstanceAction | |
| 0x1e | PNP_GetDeviceStatus | |
| 0x1f | PNP_SetDeviceProblem | |
| 0x20 | PNP_DisableDevInst | |
| 0x21 | PNP_UninstallDevInst | |
| 0x22 | PNP_AddID | |
| 0x23 | PNP_RegisterDriver | |
| 0x24 | PNP_QueryRemove | |
| 0x25 | PNP_RequestDeviceEject | |
| 0x26 | PNP_IsDockStationPresent | |
| 0x27 | PNP_RequestEjectPC | |
| 0x28 | PNP_HwProfFlags | |
| 0x29 | PNP_GetHwProfInfo | |
| 0x2a | PNP_AddEmptyLogConf | |
| 0x2b | PNP_FreeLogConf | |
| 0x2c | PNP_GetFirstLogConf | |
| 0x2d | PNP_GetNextLogConf | |
| 0x2e | PNP_GetLogConfPriority | |
| 0x2f | PNP_AddResDes | |
| 0x30 | PNP_FreeResDes | |
| 0x31 | PNP_GetNextResDes | |
| 0x32 | PNP_GetResDesData | |
| 0x33 | PNP_GetResDesDataSize | |
| 0x34 | PNP_ModifyResDes | |
| 0x35 | PNP_DetectResourceConflict | |
| 0x36 | PNP_QueryResConfList | |
| 0x37 | PNP_SetHwProf | |
| 0x38 | PNP_QueryArbitratorFreeData | |
| 0x39 | PNP_QueryArbitratorFreeSize | |
| 0x3a | PNP_RunDetection | |
| 0x3b | PNP_RegisterNotification | |
| 0x3c | PNP_UnregisterNotification | |
| > Windows XP and Windows Server 2003 | 0x3d | PNP_GetCustomDevProp |
| 0x3e | PNP_GetVersionInternal | |
| 0x3f | PNP_GetBlockedDriverInfo | |
| 0x40 | PNP_GetServerSideDeviceInstallFlags | |
| > Windows Vista | 0x41 | PNP_GetObjectPropKeys |
| 0x42 | PNP_GetObjectProp | |
| 0x43 | PNP_SetObjectProp | |
| 0x44 | PNP_InstallDevInst | |
| 0x45 | PNP_ApplyPowerSettings | |
| 0x46 | PNP_DriverStoreAddDriverPackage | |
| 0x47 | PNP_DriverStoreDeleteDriverPackage | |
| 0x48 | PNP_RegisterServiceNotification | |
| 0x49 | PNP_SetActiveService | |
| 0x4a | PNP_DeleteServiceDevices |
In Windows NT 4.0, a similar interface exists with exactly the same interface identifier but in version 0.0 and with fewer operations (thanks to Derek Soeder for providing operations names).
Z:\>ifids -p ncacn_np -e \pipe\ntsvcs \\. Interfaces: 7 [...] 8d9f4e40-a03d-11ce-8f69-08003e30051b v0.0
Table 4.22. nt4_pnp operations
| Interface | Operation number | Operation name |
|---|---|---|
| 8d9f4e40-a03d-11ce-8f69-08003e30051b v0.0: nt4_pnp | ||
| 0x00 | PNP_Connect | |
| 0x01 | PNP_Disconnect | |
| 0x02 | PNP_GetVersion | |
| 0x03 | PNP_GetGlobalState | |
| 0x04 | PNP_InitDetection | |
| 0x05 | PNP_ReportLogOn | |
| 0x06 | PNP_ValidateDeviceInstance | |
| 0x07 | PNP_GetRootDeviceInstance | |
| 0x08 | PNP_GetRelatedDeviceInstance | |
| 0x09 | PNP_EnumerateSubKeys | |
| 0x0a | PNP_GetDeviceList | |
| 0x0b | PNP_GetDeviceListSize | |
| 0x0c | PNP_GetDepth | |
| 0x0d | PNP_GetDeviceRegProp | |
| 0x0e | PNP_SetDeviceRegProp | |
| 0x0f | PNP_GetClassInstance | |
| 0x10 | PNP_CreateKey | |
| 0x11 | PNP_DeleteRegistryKey | |
| 0x12 | PNP_GetClassCount | |
| 0x13 | PNP_GetClassName | |
| 0x14 | PNP_DeleteClassKey | |
| 0x15 | PNP_CreateDevInst | |
| 0x16 | PNP_DeviceInstanceAction | |
| 0x17 | PNP_GetDeviceStatus | |
| 0x18 | PNP_UninstallDevInst | |
| 0x19 | PNP_AddID | |
| 0x1a | PNP_HwProfFlags | |
| 0x1b | PNP_GetHwProfInfo | |
| 0x1c | PNP_AddEmptyLogConf | |
| 0x1d | PNP_FreeLogConf | |
| 0x1e | PNP_GetFirstLogConf | |
| 0x1f | PNP_GetNextLogConf | |
| 0x20 | PNP_AddResDes | |
| 0x21 | PNP_FreeResDes | |
| 0x22 | PNP_GetNextResDes | |
| 0x23 | PNP_GetResDesData | |
| 0x24 | PNP_GetResDesDataSize | |
| 0x25 | PNP_ModifyResDes | |
| 0x26 | PNP_DetectResourceConflict | |
| 0x27 | PNP_SetHwProf | |
| 0x28 | PNP_QueryArbitratorFreeData | |
| 0x29 | PNP_QueryArbitratorFreeSize | |
| 0x2a | PNP_RunDetection |