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
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) |