IRP_MN_DISABLE_EVENTS
Cualquier controlador WMI que registre uno o varios bloques de eventos debe controlar este IRP. Un controlador puede controlar los IRP de WMI llamando a WmiSystemControl o controlando el PROPIO IRP, como se describe en Control de solicitudes WMI.
Si un controlador llama a WmiSystemControl para controlar una solicitud de IRP_MN_DISABLE_EVENTS , WMI a su vez llama a la rutina DpWmiFunctionControl del controlador.
Código principal
Cuándo se envió
WMI envía este IRP para informar al controlador de que un consumidor de datos no ha solicitado ninguna notificación adicional de un evento.
WMI envía este IRP en IRQL = PASSIVE_LEVEL en un contexto de subproceso arbitrario.
Parámetros de entrada
Parameters.WMI.ProviderId apunta al objeto de dispositivo del controlador que debe responder a la solicitud. Este puntero se encuentra en la ubicación de la pila de E/S del controlador en irP.
Parameters.WMI.DataPath apunta a un GUID que identifica el bloque de eventos que se va a deshabilitar.
Parámetros de salida
Ninguno.
Bloque de estado de entrada/salida
Si el controlador controla el IRP mediante una llamada a WmiSystemControl, WMI establece Irp-IoStatus.Status> e Irp-IoStatus.Information> en el bloque de estado de E/S.
De lo contrario, el controlador establece Irp-IoStatus.Status> en STATUS_SUCCESS o en un estado de error adecuado, como el siguiente:
STATUS_WMI_GUID_NOT_FOUND
STATUS_INVALID_DEVICE_REQUEST
Si se ejecuta correctamente, un controlador establece Irp-IoStatus.Information> en cero.
Operación
Un controlador puede controlar los IRP de WMI llamando a WmiSystemControl o controlando el PROPIO IRP, como se describe en Control de solicitudes WMI.
Si un controlador controla los IRP de WMI llamando a WmiSystemControl, esa rutina llama a la rutina DpWmiFunctionControl del controlador o devuelve STATUS_SUCCESS si el controlador no define la rutina.
Si un controlador controla una solicitud de IRP_MN_DISABLE_EVENTS , solo debe hacerlo si Parameters.WMI.ProviderId apunta al mismo objeto de dispositivo que el puntero que el controlador pasó a IoWMIRegistrationControl. De lo contrario, el controlador debe reenviar la solicitud al controlador inferior siguiente.
Antes de controlar una solicitud, el controlador debe determinar si Parameters.WMI.DataPath apunta a un GUID que admite el controlador. Si no es así, el controlador debe producir un error en el IRP y devolver STATUS_WMI_GUID_NOT_FOUND.
Si el controlador admite el bloque de eventos, deshabilita el evento para todas las instancias de ese bloque.
No es necesario que el controlador compruebe si los eventos ya están deshabilitados para el bloque de eventos porque WMI envía una única solicitud de deshabilitación para ese bloque de eventos cuando el último consumidor de datos deshabilita el evento. WMI no enviará otra solicitud de deshabilitación sin una solicitud intermedia para habilitarla.
Para obtener más información sobre cómo definir bloques de eventos, consulte Diseño de datos WMI y bloques de eventos.
Requisitos
Encabezado |
Wdm.h (incluya Wdm.h, Ntddk.h o Ntifs.h) |