WdfWmiProviderCreate-Funktion (wdfwmi.h)
[Gilt nur für KMDF]
Die WdfWmiProviderCreate-Methode erstellt ein WMI-Anbieterobjekt, das einen WMI-Datenblock darstellt.
Syntax
NTSTATUS WdfWmiProviderCreate(
[in] WDFDEVICE Device,
[in] PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
[in, optional] PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
[out] WDFWMIPROVIDER *WmiProvider
);
Parameter
[in] Device
Ein Handle für ein Framework-Geräteobjekt, das das übergeordnete Objekt des neuen Anbieterobjekts sein wird. Das Geräteobjekt kann kein Steuerelement-Geräteobjektsein.
[in] WmiProviderConfig
Ein Zeiger auf eine vom Aufrufer initialisierte WDF_WMI_PROVIDER_CONFIG Struktur, die Konfigurationsinformationen zum WMI-Datenblock enthält.
[in, optional] ProviderAttributes
Ein Zeiger auf eine vom Aufrufer zugewiesene WDF_OBJECT_ATTRIBUTES Struktur, die vom Treiber bereitgestellte Objektattribute für das neue WMI-Anbieterobjekt enthält. (Das ParentObject-Element der Struktur muss NULL-sein.) Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.
[out] WmiProvider
Ein Zeiger auf eine Position, die ein Handle für das neue WMI-Anbieterobjekt empfängt.
Rückgabewert
WdfWmiProviderCreate gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Ein ungültiger Parameter wurde erkannt. |
|
Die Größe der WDF_WMI_PROVIDER_CONFIG Struktur, auf die der WmiProviderConfig Parameter verweist, war falsch. |
|
Zum Abschließen des Vorgangs war nicht genügend Arbeitsspeicher vorhanden. |
|
Der Treiber hat bereits WdfWmiProviderCreate für das angegebene Gerät und den WMI-Datenblock aufgerufen. |
Eine Liste mit anderen Rückgabewerten, die von der WdfWmiProviderCreate Methode möglicherweise zurückgegeben werden, finden Sie unter Framework Object Creation Errors.
Diese Methode kann auch andere NTSTATUS-Wertezurückgeben.
Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.
Bemerkungen
Ihr Treiber muss WdfWmiProviderCreate aufrufen, um ein WMI-Anbieterobjekt zu erstellen, wenn der Treiber mehrere Instanzen des Anbieters erstellt. Wenn der Treiber nur eine Instanz des Anbieters erstellt, kann er WdfWmiInstanceCreate aufrufen, ohne zuerst WdfWmiProviderCreateaufzurufen.
Ein Treiber kann WdfWmiProviderCreate jederzeit aufrufen, treiber rufen jedoch in der Regel WdfWmiProviderCreate innerhalb ihrer EvtDriverDeviceAdd Rückruffunktionen auf.
Das übergeordnete Element jedes WMI-Anbieterobjekts ist das Framework-Geräteobjekt des Geräts. Der Treiber kann dieses übergeordnete Element nicht ändern, und das ParentObject-Element oder die WDF_OBJECT_ATTRIBUTES Struktur muss NULL-sein.
Nachdem ein Treiber WdfWmiProviderCreateaufgerufen hat, kann der Treiber WdfWmiProviderGetDevice- aufrufen, um ein Handle für das übergeordnete Geräteobjekt des Anbieterobjekts abzurufen.
Nachdem ein Treiber ein WMI-Anbieterobjekt erstellt hat, kann der Treiber das Objekt nicht löschen. Das Framework löscht die WMI-Anbieterobjekte eines Geräts, wenn es das Framework-Geräteobjekt löscht, das das Gerät darstellt. WMI-Anbieterobjekte verwenden minimale Systemressourcen.
Weitere Informationen zur WdfWmiProviderCreate-Methode finden Sie unter Unterstützen von WMI in Framework-Based Drivers.
Beispiele
Im folgenden Codebeispiel wird eine WDF_WMI_PROVIDER_CONFIG Struktur initialisiert und WdfWmiProviderCreateaufgerufen.
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
);
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Minimale KMDF-Version | 1.0 |
Header- | wdfwmi.h (einschließen Wdf.h) |
Library | Wdf01000.sys (siehe Framework-Bibliotheksversionsverwaltung.) |
IRQL- | <=DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |