Compartilhar via


IRP_MN_DISABLE_EVENTS

Qualquer driver WMI que registre um ou mais blocos de eventos deve lidar com esse IRP. Um driver pode lidar com IRPs WMI chamando WmiSystemControl ou manipulando o IRP em si, conforme descrito em Tratamento de Solicitações WMI.

Se um driver chamar WmiSystemControl para lidar com uma solicitação IRP_MN_DISABLE_EVENTS , o WMI, por sua vez, chamará a rotina DpWmiFunctionControl desse driver.

Código principal

IRP_MJ_SYSTEM_CONTROL

Quando enviado

O WMI envia esse IRP para informar ao driver que um consumidor de dados não solicitou nenhuma notificação adicional de um evento.

O WMI envia esse IRP em IRQL = PASSIVE_LEVEL em um contexto de thread arbitrário.

Parâmetros de Entrada

Parameters.WMI.ProviderId aponta para o objeto de dispositivo do driver que deve responder à solicitação. Esse ponteiro está localizado no local da pilha de E/S do driver no IRP.

Parameters.WMI.DataPath aponta para um GUID que identifica o bloco de eventos a ser desabilitado.

Parâmetros de saída

Nenhum.

Bloco de Status de E/S

Se o driver manipular o IRP chamando WmiSystemControl, o WMI definirá Irp-IoStatus.Status> e Irp-IoStatus.Information> no bloco de E/S status.

Caso contrário, o driver define Irp-IoStatus.Status> como STATUS_SUCCESS ou para um erro apropriado status como o seguinte:

STATUS_WMI_GUID_NOT_FOUND

STATUS_INVALID_DEVICE_REQUEST

Com êxito, um driver define Irp-IoStatus.Information> como zero.

Operação

Um driver pode lidar com IRPs WMI chamando WmiSystemControl ou manipulando o IRP em si, conforme descrito em Tratamento de Solicitações WMI.

Se um driver manipular IRPs WMI chamando WmiSystemControl, essa rotina chamará a rotina DpWmiFunctionControl do driver ou retornará STATUS_SUCCESS se o driver não definir a rotina.

Se um driver manipular uma solicitação de IRP_MN_DISABLE_EVENTS em si, ele deverá fazê-lo somente se Parameters.WMI.ProviderId apontar para o mesmo objeto de dispositivo que o ponteiro que o driver passou para IoWMIRegistrationControl. Caso contrário, o driver deve encaminhar a solicitação para o driver mais baixo.

Antes de lidar com uma solicitação, o driver deve determinar se Parameters.WMI.DataPath aponta para um GUID compatível com o driver. Caso contrário, o driver deve falhar no IRP e retornar STATUS_WMI_GUID_NOT_FOUND.

Se o driver der suporte ao bloco de eventos, ele desabilita o evento para todas as instâncias desse bloco.

É desnecessário que o driver marcar se os eventos já estão desabilitados para o bloco de eventos porque o WMI envia uma única solicitação de desabilitação para esse bloco de eventos quando o último consumidor de dados desabilita o evento. O WMI não enviará outra solicitação de desabilitação sem uma solicitação intervindo para habilitar.

Para obter detalhes sobre como definir blocos de eventos, consulte Criando dados WMI e blocos de eventos.

Requisitos

parâmetro

Wdm.h (inclua Wdm.h, Ntddk.h ou Ntifs.h)

Confira também

DpWmiFunctionControl

IoWMIRegistrationControl

IRP_MN_ENABLE_EVENTS

WMILIB_CONTEXT

WmiSystemControl