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 |
---|---|
|
È stato rilevato un parametro non valido. |
|
Dimensioni della struttura WDF_WMI_PROVIDER_CONFIG a cui il parametro WmiProviderConfig puntato non è corretto. |
|
Memoria insufficiente per completare l'operazione. |
|
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) |