Condividi tramite


Funzione WdfWmiProviderCreate (wdfwmi.h)

[Si applica solo a KMDF]

Il metodo WdfWmiProviderCreate crea un oggetto provider WMI che rappresenta un blocco di dati WMI.

Sintassi

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

Parametri

[in] Device

Handle per un oggetto dispositivo framework che sarà il nuovo oggetto padre dell'oggetto provider. L'oggetto dispositivo non può essere un oggetto del dispositivo di controllo.

[in] WmiProviderConfig

Puntatore a una struttura di WDF_WMI_PROVIDER_CONFIG inizializzata dal chiamante che contiene informazioni di configurazione sul blocco di dati WMI.

[in, optional] ProviderAttributes

Puntatore a una struttura di WDF_OBJECT_ATTRIBUTES allocata dal chiamante che contiene attributi di oggetto forniti dal driver per il nuovo oggetto provider WMI. Il membro ParentObject della struttura deve essere NULL. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.

[out] WmiProvider

Puntatore a una posizione che riceve un handle al nuovo oggetto provider WMI.

Valore restituito

WdfWmiProviderCreate restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
È stato rilevato un parametro non valido.
STATUS_INFO_LENGTH_MISMATCH
Dimensioni della struttura WDF_WMI_PROVIDER_CONFIG a cui il parametro WmiProviderConfig puntava non è corretto.
STATUS_INSUFFICIENT_RESOURCES
Memoria insufficiente per completare l'operazione.
STATUS_OBJECT_NAME_EXISTS
Il driver ha già chiamato WdfWmiProviderCreate per il dispositivo specificato e il blocco di dati WMI.
 

Per un elenco di altri valori restituiti che il metodo WdfWmiProviderCreate potrebbe restituire, vedere Errori di creazione dell'oggetto Framework.

Questo metodo potrebbe restituire anche altri valori NTSTATUS.

Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.

Commenti

Il driver deve chiamare WdfWmiProviderCreate per creare un oggetto provider WMI se il driver creerà più istanze del provider. Se il driver creerà solo un'istanza del provider, può chiamare WdfWmiInstanceCreate senza prima chiamare WdfWmiProviderCreate.

Un driver può chiamare WdfWmiProviderCreate in qualsiasi momento, ma i driver in genere chiamano WdfWmiProviderCreate dall'interno delle funzioni evtDriverDeviceAdd callback.

L'elemento padre di ogni oggetto provider WMI è l'oggetto del dispositivo framework del dispositivo del dispositivo. Il driver non può modificare questo elemento padre e il membro ParentObject o la struttura WDF_OBJECT_ATTRIBUTES deve essere NULL.

Dopo che un driver chiama WdfWmiProviderCreate, il driver può chiamare WdfWmiProviderGetDevice per recuperare un handle all'oggetto dispositivo padre dell'oggetto provider.

Dopo che un driver crea un oggetto provider WMI, il driver non può eliminare l'oggetto. Il framework elimina gli oggetti provider WMI di un dispositivo quando elimina l'oggetto dispositivo framework che rappresenta il dispositivo. Gli oggetti provider WMI usano risorse di sistema minime.

Per altre informazioni sul metodo WdfWmiProviderCreate , vedere Supporto di WMI in Framework-Based Driver.

Esempio

L'esempio di codice seguente inizializza una struttura WDF_WMI_PROVIDER_CONFIG e chiama 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
                              );

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdfwmi.h (include Wdf.h)
Libreria Wdf01000.sys (vedere Framework Library Versioning).
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceCreate

WdfWmiProviderGetDevice