Plug and Play вспомогательных irp

В этом разделе описываются PnP IRP, отправляемые драйверам. Все PnP IRP имеют основной код функции IRP_MJ_PNP и дополнительный код функции, указывающий конкретный запрос PnP.

В этом разделе содержатся справочные сведения по отдельным IRP. См. Plug and Play для описания порядка отправки irP, обсуждения того, как обрабатывать IRP в подпрограммах DispatchPnP, а также общего обсуждения концепций и терминологии PnP.

Для каждого IRP и каждого типа драйвера драйвер либо требуется для обработки IRP, может при необходимости обрабатывать IRP, либо не должен обрабатывать IRP. Обратитесь к таблице ниже, чтобы определить, какие IRP будет обрабатывать ваш драйвер, а затем обратитесь к справочным страницам для получения сведений об отдельных IRP. IrP перечислены в функциональном порядке в таблице и в алфавитном порядке на справочных страницах IRP.

Если IRP помечен как "Нет" в таблице для конкретного драйвера, этот драйвер не должен обрабатывать IRP. Драйвер должен передать IRP следующему драйверу в стеке устройств, как описано на странице справочника по IRP.

Диспетчер PnP отправляет эти IRP. Драйверы PnP могут отправлять некоторые из этих irP, но только те, которые указаны в этом разделе.

Ниже приведены дополнительные коды функций для PnP IRP и типы драйверов, которые их обрабатывают:

Код вспомогательной функции IRP PnP Значение Драйвер функции или фильтра для устройства, не являющееся шиной Драйвер функции для устройства шины (для 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)
- EjectionRelations x Нет Нет Необязательно
- УдалениеРеляции 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.