Inicializando o suporte do WMI em seu driver
[Aplica-se somente ao KMDF]
Para dar suporte a blocos de dados WMI, um driver baseado em estrutura:
Registra os nomes de recursos MOF (formato de objeto gerenciado) de quaisquer provedores de dados WMI personalizados que não estão definidos em Wmicore.mof.
Cria um ou mais objetos de instância WMI para representar os blocos de dados que ele pode ler ou gravar.
Opcionalmente, implementa uma ou mais funções de retorno de chamada de evento para fornecer os dados WMI fornecidos pelo driver.
Registre cada objeto de instância WMI para disponibilizá-lo para clientes WMI.
Para inicializar seu suporte ao WMI, um driver KMDF segue estas etapas, normalmente dentro de seu retorno de chamada EvtDriverDeviceAdd ou EvtDeviceSelfManagedIoInit :
Um driver que fornece um arquivo MOF para dar suporte a provedores de dados WMI personalizados deve chamar o método WdfDeviceAssignMofResourceName para registrar um nome de recurso MOF antes que o driver crie objetos de provedor WMI que representam o provedor de dados.
Inicialize uma estrutura de configuração do provedor WMI e, opcionalmente, crie um objeto de provedor WMI (WDFWMIPROVIDER).
Inicialize uma estrutura de configuração de instância WMI e crie um objeto de instância WMI (WDFWMIINSTANCE).
A estrutura cria um provedor WMI por padrão quando um driver KMDF cria sua primeira instância WMI. Portanto, se o driver exigir apenas um provedor WMI, não será necessário chamar o método de criação de provedor (WdfWmiProviderCreate). No entanto, o driver deve preencher a estrutura de configuração do provedor porque essa estrutura fornece informações sobre o provedor que a estrutura usa quando cria a instância.
Se o driver criar uma única instância de cada bloco de dados WMI compatível, o driver chamará WdfWmiInstanceCreate, passando uma estrutura WDF_WMI_PROVIDER_CONFIG e uma estrutura WDF_WMI_INSTANCE_CONFIG . Essa única chamada configura o objeto de provedor WMI fornecido pela estrutura única e cria um objeto de instância WMI.
Se o driver criar várias instâncias de seus blocos de dados WMI, o driver deverá chamar WdfWmiProviderCreate e WdfWmiInstanceCreate
Registrando instâncias de provedor
Antes que os clientes WMI possam acessar os blocos de dados WMI do driver, o driver deve registrar suas instâncias de provedor com o serviço WMI do sistema. O driver pode usar qualquer uma das seguintes técnicas para registrar uma instância de provedor:
Defina o membro Register da estrutura WDF_WMI_INSTANCE_CONFIG da instância do provedor como TRUE.
Se o driver definir Registrar como TRUE, a estrutura registrará automaticamente a instância na primeira vez que o dispositivo entrar em seu estado de trabalho (D0).
Chame o método WdfWmiInstanceRegister .
Se o driver chamar WdfWmiInstanceRegister depois de chamar WdfWmiInstanceCreate, a estrutura registrará a instância depois que o dispositivo estiver em seu estado de trabalho (D0).
A estrutura desregistre automaticamente cada instância do provedor quando o dispositivo da instância é removido (e antes de chamar a função de retorno de chamada de evento EvtDeviceSelfManagedIoCleanup ). Para obter informações sobre a ordem na qual a estrutura chama as funções de retorno de chamada de um driver, consulte Cenários de gerenciamento de energia e PnP.
Seu driver pode cancelar o registro de uma instância a qualquer momento chamando WdfWmiInstanceDeregister.