PLUG AND PLAY IRPs menores

Esta seção descreve os IRPs PnP que são enviados aos drivers. Todos os IRPs PnP têm o código de função principal IRP_MJ_PNP e um código de função secundário que indica a solicitação PnP específica.

Esta seção fornece informações de referência para os IRPs individuais. Consulte Plug and Play para obter uma descrição da ordem na qual os IRPs são enviados, uma discussão sobre como lidar com IRPs em rotinas DispatchPnP e uma discussão geral sobre conceitos e terminologia de PnP.

Para cada IRP e cada tipo de driver, um driver é necessário para lidar com o IRP, pode opcionalmente lidar com o IRP ou não deve lidar com o IRP. Consulte a tabela abaixo para identificar quais IRPs seu driver manipulará e, em seguida, consulte as páginas de referência para obter informações sobre os IRPs individuais. Os IRPs são listados em ordem funcional na tabela e em ordem alfabética nas páginas de referência do IRP.

Se um IRP estiver marcado como "Não" na tabela para um driver específico, esse driver não deverá manipular o IRP. O driver deve passar o IRP para o próximo driver na pilha do dispositivo, conforme descrito na página de referência do IRP.

O gerenciador PnP envia esses IRPs. Os drivers PnP podem enviar alguns desses IRPs, mas apenas aqueles indicados nesta seção.

Veja a seguir os códigos de função secundários para IRPs PnP e os tipos de driver que os manipulam:

Código de função secundária PnP IRP Valor Driver de função ou filtro para dispositivo nãobus Driver de função para dispositivo de barramento (para FDO de barramento) Driver de barramento ou driver de filtro de barramento (para PDOs filho)
IRP_MN_START_DEVICE 0x00 Obrigatório Obrigatório Obrigatório
IRP_MN_QUERY_REMOVE_DEVICE 0x01 Obrigatório Obrigatório Obrigatório
IRP_MN_REMOVE_DEVICE 0x02 Obrigatório Obrigatório Obrigatório
IRP_MN_CANCEL_REMOVE_DEVICE 0x03 Obrigatório Obrigatório Obrigatório
IRP_MN_STOP_DEVICE 0x04 Obrigatório Obrigatório Obrigatório
IRP_MN_QUERY_STOP_DEVICE 0x05 Obrigatório Obrigatório Obrigatório
IRP_MN_CANCEL_STOP_DEVICE 0x06 Obrigatório Obrigatório Obrigatório
IRP_MN_QUERY_DEVICE_RELATIONS 0x07
- BusRelations x Opcional (1) Obrigatório No (2)
- EjeçãoRelations x Não Não Opcional
- RemovalRelations x Opcional Opcional Não
- TargetDeviceRelation x Não No Obrigatório
IRP_MN_QUERY_INTERFACE 0x08 Opcional Opcional Obrigatório (1)
IRP_MN_QUERY_CAPABILITIES 0x09 Opcional Opcional ou Obrigatório
IRP_MN_QUERY_RESOURCES 0x0A Não Não Obrigatório (1)
IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B Não Não Obrigatório (1)
IRP_MN_QUERY_DEVICE_TEXT 0x0C Não Não Obrigatório (1)
IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D Opcional (1) Opcional (1) Não
IRP_MN_READ_CONFIG 0x0F Não Não Obrigatório (1)
IRP_MN_WRITE_CONFIG 0x10 Não Não Obrigatório (1)
IRP_MN_EJECT 0x11 Não No Obrigatório
IRP_MN_SET_LOCK 0x12 Não Não Obrigatório (1)
IRP_MN_QUERY_ID 0x13
- BusQueryDeviceID x Não No Obrigatório
- BusQueryHardwareIDs x Não Não Opcional
- BusQueryCompatibleIDs x Não Não ou Opcional
- BusQueryInstanceID x Não Não Opcional
- BusQueryContainerID x Não Não Obrigatório (3)
IRP_MN_QUERY_PNP_DEVICE_STATE 0x14 Opcional Opcional Opcional
IRP_MN_QUERY_BUS_INFORMATION 0x15 Não Não Obrigatório (1)
IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16 Obrigatório (1) Obrigatório (1) Obrigatório (1)
IRP_MN_SURPRISE_REMOVAL 0x17 Obrigatório Obrigatório Obrigatório
IRP_MN_DEVICE_ENUMERATED 0x19 Não Não Obrigatório (1)

(1) Obrigatório ou opcional em determinadas situações. Consulte a página de referência do IRP para obter mais detalhes.

(2) Os drivers de filtro de barramento podem manipular uma consulta para BusRelations.

(3) Com suporte no Windows 7 e versões posteriores do Windows.