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

IRP_MJ_SYSTEM_CONTROL

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)

Consulte también

DpWmiFunctionControl

IoWMIRegistrationControl

IRP_MN_ENABLE_EVENTS

WMILIB_CONTEXT

WmiSystemControl