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.