Compartir a través de


Función WdfWmiProviderCreate (wdfwmi.h)

[Solo se aplica a KMDF]

El método WdfWmiProviderCreate crea un objeto de proveedor WMI que representa un bloque de datos WMI.

Sintaxis

NTSTATUS WdfWmiProviderCreate(
  [in]           WDFDEVICE                Device,
  [in]           PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   ProviderAttributes,
  [out]          WDFWMIPROVIDER           *WmiProvider
);

Parámetros

[in] Device

Identificador de un objeto de dispositivo de marco que será el nuevo objeto primario del objeto de proveedor. El objeto de dispositivo no puede ser un objeto de control de dispositivo.

[in] WmiProviderConfig

Puntero a una estructura de WDF_WMI_PROVIDER_CONFIG inicializada por el autor de la llamada que contiene información de configuración sobre el bloque de datos WMI.

[in, optional] ProviderAttributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES asignada por el autor de la llamada que contiene atributos de objeto proporcionados por el controlador para el nuevo objeto de proveedor WMI. (El miembro ParentObject de la estructura debe ser NULL). Este parámetro es opcional y se puede WDF_NO_OBJECT_ATTRIBUTES.

[out] WmiProvider

Puntero a una ubicación que recibe un identificador para el nuevo objeto de proveedor WMI.

Valor devuelto

WdfWmiProviderCreate devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_INVALID_PARAMETER
Se detectó un parámetro no válido.
STATUS_INFO_LENGTH_MISMATCH
El tamaño de la estructura WDF_WMI_PROVIDER_CONFIG a la que apuntaba el parámetro WmiProviderConfig era incorrecto.
STATUS_INSUFFICIENT_RESOURCES
No había memoria suficiente para completar la operación.
STATUS_OBJECT_NAME_EXISTS
El controlador ya ha llamado a WdfWmiProviderCreate para el dispositivo y el bloque de datos WMI especificados.
 

Para obtener una lista de otros valores devueltos que el método WdfWmiProviderCreate podría devolver, vea Errores de creación de objetos de marco.

Este método también puede devolver otros valores de NTSTATUS.

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Observaciones

El controlador debe llamar a WdfWmiProviderCreate para crear un objeto de proveedor WMI si el controlador creará varias instancias del proveedor. Si el controlador creará solo una instancia del proveedor, puede llamar a WdfWmiInstanceCreate sin llamar primero a WdfWmiProviderCreate.

Un controlador puede llamar a WdfWmiProviderCreate en cualquier momento, pero los controladores suelen llamar a WdfWmiProviderCreate desde su EvtDriverDeviceAdd funciones de devolución de llamada.

El elemento primario de cada objeto de proveedor WMI es el objeto de dispositivo marco del dispositivo. El controlador no puede cambiar este elemento primario y el miembro parentObject de o la estructura WDF_OBJECT_ATTRIBUTES debe ser null.

Después de que un controlador llame a WdfWmiProviderCreate, el controlador puede llamar a WdfWmiProviderGetDevice para recuperar un identificador al objeto de dispositivo primario del objeto de proveedor.

Una vez que un controlador crea un objeto de proveedor WMI, el controlador no puede eliminar el objeto . El marco elimina los objetos del proveedor WMI de un dispositivo cuando elimina el objeto de dispositivo de marco que representa el dispositivo. Los objetos del proveedor WMI usan recursos mínimos del sistema.

Para obtener más información sobre el método WdfWmiProviderCreate, vea Compatibilidad con WMI en Framework-Based Controladores.

Ejemplos

En el ejemplo de código siguiente se inicializa una estructura de WDF_WMI_PROVIDER_CONFIG y se llama a 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
de la plataforma de destino de Universal
versión mínima de KMDF 1.0
encabezado de wdfwmi.h (incluya Wdf.h)
biblioteca de Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
irQL <=DISPATCH_LEVEL
reglas de cumplimiento de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceCrear

WdfWmiProviderGetDevice