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à l'oggetto padre del nuovo oggetto provider. L'oggetto dispositivo non può essere un oggetto 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 gli attributi dell'oggetto fornito 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 per il 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 puntato non è corretto.
STATUS_INSUFFICIENT_RESOURCES
Memoria insufficiente per completare l'operazione.
STATUS_OBJECT_NAME_EXISTS
Il driver ha già chiamato WdfWmiProviderCreare per il dispositivo e il blocco di dati WMI specificato.
 

Per un elenco di altri valori restituiti dal metodo WdfWmiProviderCreate, vedere Framework Object Creation Errors.

Questo metodo potrebbe anche restituire altri valori NTSTATUS .

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Osservazioni

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

Un driver può chiamare WdfWmiProviderCreare in qualsiasi momento, ma i driver in genere chiamano WdfWmiProviderCreate dall'interno del proprio EvtDriverDeviceAdd funzioni di callback.

L'elemento padre di ogni oggetto provider WMI è l'oggetto 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.

Esempi

L'esempio di codice seguente inizializza una struttura di WDF_WMI_PROVIDER_CONFIG e chiama WdfWmiProviderCreare.

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
                              );

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
versione minima di KMDF 1.0
intestazione wdfwmi.h (include Wdf.h)
libreria Wdf01000.sys (vedere Controllo delle versioni della libreria framework).
IRQL <=DISPATCH_LEVEL
regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedere anche

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceCreare

WdfWmiProviderGetDevice