Compartilhar via


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
STATUS_INVALID_PARAMETER
Um parâmetro inválido foi detectado.
STATUS_INFO_LENGTH_MISMATCH
O tamanho da estrutura WDF_WMI_PROVIDER_CONFIG que o parâmetro WmiProviderConfig apontou estava incorreto.
STATUS_INSUFFICIENT_RESOURCES
Não havia memória suficiente para concluir a operação.
STATUS_OBJECT_NAME_EXISTS
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)

Confira também

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceCreate

WdfWmiProviderGetDevice