IRP secundarias de Plug and Play
En esta sección se describen los IRP de PnP que se envían a los controladores. Todos los IRP de PnP tienen el código de función principal IRP_MJ_PNP y un código de función secundaria que indica la solicitud PnP determinada.
En esta sección se proporciona información de referencia para los IRP individuales. Consulte Plug and Play para obtener una descripción del orden en el que se envían los IRP, una explicación de cómo controlar los IRP en rutinas dispatchPnP y una explicación general de los conceptos y la terminología de PnP.
Para cada IRP y cada tipo de controlador, se requiere un controlador para controlar el IRP, puede controlar opcionalmente el IRP o no debe controlar el IRP. Consulte la tabla siguiente para identificar qué IRP controlará el controlador y, a continuación, consulte las páginas de referencia para obtener información sobre los IRP individuales. Los IRP se enumeran en orden funcional en la tabla y en orden alfabético en las páginas de referencia de IRP.
Si un IRP se marca como "No" en la tabla para un controlador determinado, ese controlador no debe controlar el IRP. El controlador debe pasar el IRP al siguiente controlador de la pila de dispositivos, tal como se describe en la página de referencia del IRP.
El administrador de PnP envía estos IRP. Los controladores PnP pueden enviar algunas de estas IRP, pero solo las indicadas en esta sección.
A continuación se muestran los códigos de función secundarios para los IRP de PnP y los tipos de controlador que los controlan:
Código de función secundaria de IRP de PnP | Valor | Función o controlador de filtro para dispositivos que no son de bus | Controlador de función para el dispositivo bus (para FDO de bus) | Controlador de autobús o controlador de filtro de autobús (para PPO secundarios) |
---|---|---|---|---|
IRP_MN_START_DEVICE | 0x00 | Obligatorio | Obligatorio | Obligatorio |
IRP_MN_QUERY_REMOVE_DEVICE | 0x01 | Obligatorio | Obligatorio | Obligatorio |
IRP_MN_REMOVE_DEVICE | 0x02 | Obligatorio | Obligatorio | Obligatorio |
IRP_MN_CANCEL_REMOVE_DEVICE | 0x03 | Obligatorio | Obligatorio | Obligatorio |
IRP_MN_STOP_DEVICE | 0x04 | Obligatorio | Obligatorio | Obligatorio |
IRP_MN_QUERY_STOP_DEVICE | 0x05 | Obligatorio | Obligatorio | Obligatorio |
IRP_MN_CANCEL_STOP_DEVICE | 0x06 | Obligatorio | Obligatorio | Obligatorio |
IRP_MN_QUERY_DEVICE_RELATIONS | 0x07 | |||
- BusRelations | x | Opcional (1) | Obligatorio | No (2) |
- EjectionRelations | x | No | No | Opcionales |
- RemovalRelations | x | Opcionales | Opcional | No |
- TargetDeviceRelation | x | No | No | Requerido |
IRP_MN_QUERY_INTERFACE | 0x08 | Opcionales | Opcionales | Obligatorio (1) |
IRP_MN_QUERY_CAPABILITIES | 0x09 | Opcionales | Opcional o obligatorio | |
IRP_MN_QUERY_RESOURCES | 0x0A | No | No | Obligatorio (1) |
IRP_MN_QUERY_RESOURCE_REQUIREMENTS | 0x0B | No | No | Obligatorio (1) |
IRP_MN_QUERY_DEVICE_TEXT | 0x0C | No | No | Obligatorio (1) |
IRP_MN_FILTER_RESOURCE_REQUIREMENTS | 0x0D | Opcional (1) | Opcional (1) | No |
IRP_MN_READ_CONFIG | 0x0F | No | No | Obligatorio (1) |
IRP_MN_WRITE_CONFIG | 0x10 | No | No | Obligatorio (1) |
IRP_MN_EJECT | 0x11 | No | No | Requerido |
IRP_MN_SET_LOCK | 0x12 | No | No | Obligatorio (1) |
IRP_MN_QUERY_ID | 0x13 | |||
- BusQueryDeviceID | x | No | No | Requerido |
- BusQueryHardwareIDs | x | No | No | Opcionales |
- BusQueryCompatibleIDs | x | No | No o opcional | |
- BusQueryInstanceID | x | No | No | Opcionales |
- BusQueryContainerID | x | No | No | Obligatorio (3) |
IRP_MN_QUERY_PNP_DEVICE_STATE | 0x14 | Opcionales | Opcionales | Opcionales |
IRP_MN_QUERY_BUS_INFORMATION | 0x15 | No | No | Obligatorio (1) |
IRP_MN_DEVICE_USAGE_NOTIFICATION | 0x16 | Obligatorio (1) | Obligatorio (1) | Obligatorio (1) |
IRP_MN_SURPRISE_REMOVAL | 0 x 17 | Obligatorio | Obligatorio | Obligatorio |
IRP_MN_DEVICE_ENUMERATED | 0x19 | No | No | Obligatorio (1) |
(1) Requerido o opcional en determinadas situaciones. Consulte la página de referencia del IRP para obtener más detalles.
(2) Los controladores de filtro de bus pueden controlar una consulta para BusRelations.
(3) Compatible con Windows 7 y versiones posteriores de Windows.