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 |
---|---|
|
Se detectó un parámetro no válido. |
|
El tamaño de la estructura WDF_WMI_PROVIDER_CONFIG a la que apuntaba el parámetro WmiProviderConfig era incorrecto. |
|
No había memoria suficiente para completar la operación. |
|
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) |