Control de solicitudes WMI
Todos los controladores deben establecer un punto de entrada de tabla de distribución para una rutina DispatchSystemControl para controlar las solicitudes WMI. Si un controlador se registra como proveedor de datos WMI, debe controlar todas las solicitudes WMI. De lo contrario, el controlador debe reenviar todas las solicitudes WMI al siguiente controlador inferior.
Todos los IRP de WMI tienen el código principal IRP_MJ_SYSTEM_CONTROL y uno de los siguientes códigos secundarios:
IRP_MN_REGINFO, IRP_MN_REGINFO_EX: consulta o actualiza la información de registro de un controlador después de que el controlador haya llamado IoWMIRegistrationControl.
IRP_MN_QUERY_ALL_DATA, IRP_MN_QUERY_SINGLE_INSTANCE: consulta todas las instancias o una única instancia de un bloque de datos determinado.
IRP_MN_CHANGE_SINGLE_ITEM, IRP_MN_CHANGE_SINGLE_INSTANCE: solicita al controlador que cambie un solo elemento o varios elementos en una instancia de un bloque de datos.
IRP_MN_ENABLE_COLLECTION, IRP_MN_DISABLE_COLLECTION: solicita al controlador que empiece a acumular datos para un bloque que el controlador registró como costoso para recopilar o dejar de acumular datos para dicho bloque.
IRP_MN_ENABLE_EVENTS, IRP_MN_DISABLE_EVENTS: solicita al controlador que empiece a enviar una notificación de un evento determinado si el evento se produce mientras está habilitado o para dejar de enviar notificaciones de este tipo de evento.
IRP_MN_EXECUTE_METHOD: solicita al controlador que ejecute un método asociado a un bloque de datos.
El componente del modo kernel de WMI envía IRP de WMI en cualquier momento después del registro correcto de un controlador como proveedor de datos WMI, normalmente cuando un consumidor de datos en modo de usuario ha solicitado información de WMI para el dispositivo de un controlador. Si un controlador se registra como proveedor de datos WMI llamando a IoWMIRegistrationControl, debe controlar cada solicitud WMI posterior de una de las maneras siguientes:
Llame a la rutina de biblioteca WMI en modo kernel WmiSystemControl. Un controlador puede llamar a WmiSystemControl para controlar las solicitudes relativas solo a los bloques que no usan nombres de instancia dinámicos y que basen nombres de instancia estáticos en una sola cadena de nombre base o el identificador de instancia de dispositivo de un PDO. Para obtener más información, vea Llamar a WmiSystemControl para controlar los IRP de WMI.
En su rutina DispatchSystemControl , procese y complete cualquier solicitud etiquetada con el puntero al objeto de dispositivo que el controlador pasó en su llamada a IoWMIRegistrationControl y reenvíe otras solicitudes de IRP_MJ_SYSTEM_CONTROL al siguiente controlador inferior. Para obtener más información, consulte Procesamiento de IRP de WMI en una rutina DispatchSystemControl.
Para obtener una lista de las IRP secundarias de WMI, consulte IRP secundarias de WMI.