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