即插即用次要 IRP
本部分介绍发送到驱动程序的 PnP IRP。 所有 PnP IRP 都具有主要函数代码 IRP_MJ_PNP 和指示特定 PnP 请求的次要函数代码。
本部分提供各个 IRP 的参考信息。 请参阅即插即用,了解 IRP 的发送顺序说明、如何在 DispatchPnP 例程中处理 IRP 的讨论,以及 PnP 概念和术语的一般讨论。
对于每个 IRP 和每种驱动程序,驱动程序要么需要处理 IRP,要么可以选择处理 IRP,要么不能处理 IRP。 请参阅下表,确定驱动程序将处理哪些 IRP,然后查阅参考页以获取有关各个 IRP 的信息。 IRP 在表中按功能顺序列出,在 IRP 参考页中按字母顺序列出。
如果 IRP 在特定驱动程序的表中标记为“否”,则该驱动程序不得处理 IRP。 驱动程序必须将 IRP 传递给设备堆栈中的下一个驱动程序,如 IRP 的参考页中所述。
PnP 管理器发送这些 IRP。 PnP 驱动程序可以发送其中一些 IRP,但只能发送本节中如此说明的 IRP。
以下是 PnP IRP 的次要函数代码,以及处理它们的驱动程序类型:
PnP IRP 次要函数代码 | 值 | 非总线设备的函数或筛选器驱动程序 | 用于总线设备 (的函数驱动程序,适用于总线 FDO) | 子 PDO 的总线驱动程序或总线筛选器驱动程序 () |
---|---|---|---|---|
IRP_MN_START_DEVICE | 0x00 | 必需 | 必需 | 必需 |
IRP_MN_QUERY_REMOVE_DEVICE | 0x01 | 必需 | 必需 | 必需 |
IRP_MN_REMOVE_DEVICE | 0x02 | 必需 | 必需 | 必需 |
IRP_MN_CANCEL_REMOVE_DEVICE | 0x03 | 必需 | 必需 | 必需 |
IRP_MN_STOP_DEVICE | 0x04 | 必需 | 必需 | 必需 |
IRP_MN_QUERY_STOP_DEVICE | 0x05 | 必需 | 必需 | 必需 |
IRP_MN_CANCEL_STOP_DEVICE | 0x06 | 必需 | 必需 | 必需 |
IRP_MN_QUERY_DEVICE_RELATIONS | 0x07 | |||
- BusRelations | x | 可选 (1) | 必需 | 否 (2) |
- 弹出关系 | x | 否 | 否 | 可选 |
- RemovalRelations | x | 可选 | 可选 | 否 |
- TargetDeviceRelation | x | 否 | 否 | 必需 |
IRP_MN_QUERY_INTERFACE | 0x08 | 可选 | 可选 | 必需 (1) |
IRP_MN_QUERY_CAPABILITIES | 0x09 | 可选 | 可选或必需 | |
IRP_MN_QUERY_RESOURCES | 0x0A | 否 | 否 | 必需 (1) |
IRP_MN_QUERY_RESOURCE_REQUIREMENTS | 0x0B | 否 | 否 | 必需 (1) |
IRP_MN_QUERY_DEVICE_TEXT | 0x0C | 否 | 否 | 必需 (1) |
IRP_MN_FILTER_RESOURCE_REQUIREMENTS | 0x0D | 可选 (1) | 可选 (1) | 否 |
IRP_MN_READ_CONFIG | 0x0F | 否 | 否 | 必需 (1) |
IRP_MN_WRITE_CONFIG | 0x10 | 否 | 否 | 必需 (1) |
IRP_MN_EJECT | 0x11 | 否 | 否 | 必需 |
IRP_MN_SET_LOCK | 0x12 | 否 | 否 | 必需 (1) |
IRP_MN_QUERY_ID | 0x13 | |||
- BusQueryDeviceID | x | 否 | 否 | 必需 |
- BusQueryHardwareIDs | x | 否 | 否 | 可选 |
- BusQueryCompatibleIDs | x | 否 | 否或可选 | |
- BusQueryInstanceID | x | 否 | 否 | 可选 |
- BusQueryContainerID | x | 否 | 否 | 必需 (3) |
IRP_MN_QUERY_PNP_DEVICE_STATE | 0x14 | 可选 | 可选 | 可选 |
IRP_MN_QUERY_BUS_INFORMATION | 0x15 | 否 | 否 | 必需 (1) |
IRP_MN_DEVICE_USAGE_NOTIFICATION | 0x16 | 必需 (1) | 必需 (1) | 必需 (1) |
IRP_MN_SURPRISE_REMOVAL | 0x17 | 必需 | 必需 | 必需 |
IRP_MN_DEVICE_ENUMERATED | 0x19 | 否 | 否 | 必需 (1) |
(1) 在某些情况下为必需或可选。 有关更多详细信息,请参阅 IRP 的参考页。
(2) 总线筛选器驱动程序可能会处理 BusRelations 的查询。
(3) Windows 7 及更高版本的 Windows 中受支持。