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 ist. Das Geräteobjekt kann kein Steuerelementgerätobjekt sein.
[in] WmiProviderConfig
Ein Zeiger auf eine aufruferinitialisierte 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 einen Speicherort, der 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. |
|
Es war nicht genügend Arbeitsspeicher vorhanden, um den Vorgang abzuschließen. |
|
Der Treiber hat bereits WdfWmiProviderCreate für das angegebene Gerät und den angegebenen WMI-Datenblock aufgerufen. |
Eine Liste mit anderen Rückgabewerten, die von der WdfWmiProviderCreate-Methode möglicherweise zurückgegeben werden, finden Sie unter Fehler bei der Erstellung von Frameworkobjekten.
Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Ihr Treiber muss WdfWmiProviderCreate aufrufen, um ein WMI-Anbieterobjekt zu erstellen, wenn der Treiber mehrere Instanzen des Anbieters erstellt. Wenn der Treiber nur eine instance des Anbieters erstellt, kann er WdfWmiInstanceCreate aufrufen, ohne zuerst WdfWmiProviderCreate aufzurufen.
Ein Treiber kann WdfWmiProviderCreate jederzeit aufrufen, aber Treiber rufen in der Regel WdfWmiProviderCreate aus ihren 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 WdfWmiProviderCreate aufgerufen 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ützung von WMI in Framework-Based-Treibern.
Beispiele
Im folgenden Codebeispiel wird eine WDF_WMI_PROVIDER_CONFIG-Struktur initialisiert und WdfWmiProviderCreate aufgerufen.
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 | Universell |
KMDF-Mindestversion | 1.0 |
Kopfzeile | wdfwmi.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (siehe Versionsverwaltung der Frameworkbibliothek).) |
IRQL | <=DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |