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 dispositivo de control.

[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 puede ser 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 ha detectado un parámetro no válido.
STATUS_INFO_LENGTH_MISMATCH
El tamaño de la estructura de WDF_WMI_PROVIDER_CONFIG al que apunta 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 WdfWmiProviderCreate para el dispositivo y el bloque de datos WMI especificados.
 

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

Este método también podría devolver otros valores NTSTATUS.

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

Comentarios

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 sus funciones de devolución de llamada EvtDriverDeviceAdd .

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 o la estructura WDF_OBJECT_ATTRIBUTES deben 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 controladores de Framework-Based.

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

   
Plataforma de destino Universal
Versión mínima de KMDF 1,0
Header wdfwmi.h (incluir Wdf.h)
Library 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

WdfWmiInstanceCreate

WdfWmiProviderGetDevice