WMI_FUNCTION_CONTROL_CALLBACK função de retorno de chamada (wmilib.h)
A rotina DpWmiFunctionControl habilita ou desabilita a notificação de eventos e habilita ou desabilita a coleta de dados para blocos de dados que o driver registrou como caros de coletar. Essa rotina é opcional.
Sintaxe
WMI_FUNCTION_CONTROL_CALLBACK WmiFunctionControlCallback;
NTSTATUS WmiFunctionControlCallback(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp,
[in] ULONG GuidIndex,
[in] WMIENABLEDISABLECONTROL Function,
[in] BOOLEAN Enable
)
{...}
Parâmetros
[in] DeviceObject
Ponteiro para a estrutura de DEVICE_OBJECT do WDM do driver.
[in] Irp
Ponteiro para o IRP.
[in] GuidIndex
Especifica o bloco de dados fornecendo um índice baseado em zero na lista de GUIDs que o driver forneceu na estrutura WMILIB_CONTEXT passada para WmiSystemControl.
[in] Function
Especifica o que habilitar ou desabilitar. WmiEventControl indica um evento e WmiDataBlockControl indica a coleta de dados de um bloco que foi registrado como caro de coletar (ou seja, um bloco para o qual o driver definido WMIREG_FLAG_EXPENSIVE em Sinalizadores da estrutura WMIGUIDREGINFO usada para registrar o bloco).
[in] Enable
Especifica TRUE para habilitar o evento ou a coleta de dados ou FALSE para desabilitá-lo.
Retornar valor
DpWmiFunctionControl retorna STATUS_SUCCESS ou um erro apropriado status como:
Comentários
O WMI chama a rotina DpWmiFunctionControl de um driver depois que o driver chama WmiSystemControl em resposta a uma das seguintes solicitações:
Se um driver implementar uma rotina DpWmiFunctionControl , o driver deverá colocar o endereço da rotina no membro WmiFunctionControl da estrutura WMILIB_CONTEXT que ele passa para WmiSystemControl. Se um driver não implementar uma rotina DpWmiFunctionControl , ele deverá definir WmiFunctionControl como NULL. No último caso, o WMI retorna STATUS_SUCCESS para o chamador.
O driver é responsável por validar todos os argumentos de entrada. Especificamente, o driver deve fazer o seguinte:
- Verifique se o valor guidIndex está entre zero e GuidCount-1, com base no membro GuidCount da estrutura WMILIB_CONTEXT .
- Verifique se o driver não sinalizou o bloco de dados especificado para remoção. Se o driver especificou recentemente o sinalizador WMIREG_FLAG_REMOVE_GUID em uma estrutura WMIGUIDREGINFO contida em uma estrutura WMILIB_CONTEXT , é possível que uma solicitação adicional chegue antes que a remoção ocorra.
Depois de habilitar ou desabilitar o evento ou a coleta de dados para o bloco, o driver chama WmiCompleteRequest para concluir a solicitação.
Essa rotina pode ser paginável.
Para obter mais informações sobre como implementar essa rotina, consulte Chamando WmiSystemControl para lidar com IRPs WMI.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | wmilib.h (inclua Wmilib.h) |
IRQL | Chamado em PASSIVE_LEVEL. |