Função WdfWmiProviderCreate (wdfwmi.h)
[Aplica-se somente ao KMDF]
O método WdfWmiProviderCreate cria um objeto de provedor WMI que representa um bloco de dados WMI.
Sintaxe
NTSTATUS WdfWmiProviderCreate(
[in] WDFDEVICE Device,
[in] PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
[in, optional] PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
[out] WDFWMIPROVIDER *WmiProvider
);
Parâmetros
[in] Device
Um identificador para um objeto de dispositivo de estrutura que será o objeto pai do novo objeto do provedor. O objeto de dispositivo não pode ser um objeto de dispositivo de controle.
[in] WmiProviderConfig
Um ponteiro para uma estrutura de WDF_WMI_PROVIDER_CONFIG inicializada pelo chamador que contém informações de configuração sobre o bloco de dados WMI.
[in, optional] ProviderAttributes
Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador que contém atributos de objeto fornecidos pelo driver para o novo objeto de provedor WMI. (O membro ParentObject da estrutura deve ser NULL.) Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.
[out] WmiProvider
Um ponteiro para um local que recebe um identificador para o novo objeto de provedor WMI.
Retornar valor
WdfWmiProviderCreate retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Um parâmetro inválido foi detectado. |
|
O tamanho da estrutura WDF_WMI_PROVIDER_CONFIG que o parâmetro WmiProviderConfig apontou estava incorreto. |
|
Não havia memória suficiente para concluir a operação. |
|
O driver já chamou WdfWmiProviderCreate para o dispositivo especificado e o bloco de dados WMI. |
Para obter uma lista de outros valores retornados que o método WdfWmiProviderCreate pode retornar, consulte Erros de criação de objeto de estrutura.
Esse método também pode retornar outros valores NTSTATUS.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
Seu driver deve chamar WdfWmiProviderCreate para criar um objeto de provedor WMI se o driver criar várias instâncias do provedor. Se o driver criar apenas uma instância do provedor, ele poderá chamar WdfWmiInstanceCreate sem primeiro chamar WdfWmiProviderCreate.
Um driver pode chamar WdfWmiProviderCreate a qualquer momento, mas os drivers normalmente chamam WdfWmiProviderCreate de dentro de suas funções de retorno de chamada EvtDriverDeviceAdd .
O pai de cada objeto de provedor WMI é o objeto de dispositivo de estrutura do dispositivo. O driver não pode alterar esse pai e o membro ParentObject ou a estrutura WDF_OBJECT_ATTRIBUTES devem ser NULL.
Depois que um driver chama WdfWmiProviderCreate, o driver pode chamar WdfWmiProviderGetDevice para recuperar um identificador para o objeto de dispositivo pai do objeto do provedor.
Depois que um driver cria um objeto de provedor WMI, o driver não pode excluir o objeto. A estrutura exclui os objetos do provedor WMI de um dispositivo quando exclui o objeto de dispositivo de estrutura que representa o dispositivo. Os objetos do provedor WMI usam recursos mínimos do sistema.
Para obter mais informações sobre o método WdfWmiProviderCreate , consulte Supporting WMI in Framework-Based Drivers.
Exemplos
O exemplo de código a seguir inicializa uma estrutura WDF_WMI_PROVIDER_CONFIG e chama WdfWmiProviderCreate.
WDF_WMI_PROVIDER_CONFIG config;
WDFWMIPROVIDER provider;
GUID providerGuid = MY_WMI_DATA_BLOCK_GUID;
NTSTATUS status;
WDF_WMI_PROVIDER_CONFIG_INIT(
&config,
providerGuid
);
config.Flags = WdfWmiProviderTracing;
config.EvtWmiProviderFunctionControl = MyProviderFunctionControl;
status = WdfWmiProviderCreate(
Device,
&config,
WDF_NO_OBJECT_ATTRIBUTES,
&provider
);
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Cabeçalho | wdfwmi.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.) |
IRQL | <=DISPATCH_LEVEL |
Regras de conformidade da DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |