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 |
---|---|
|
Se ha detectado un parámetro no válido. |
|
El tamaño de la estructura de WDF_WMI_PROVIDER_CONFIG al que apunta el parámetro WmiProviderConfig era incorrecto. |
|
No había memoria suficiente para completar la operación. |
|
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.
Una vez que un controlador llama 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
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Encabezado | 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) |