Freigeben über


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
STATUS_INVALID_PARAMETER
Ein ungültiger Parameter wurde erkannt.
STATUS_INFO_LENGTH_MISMATCH
Die Größe der WDF_WMI_PROVIDER_CONFIG Struktur, auf die der WmiProviderConfig-Parameter verweist, war falsch.
STATUS_INSUFFICIENT_RESOURCES
Es war nicht genügend Arbeitsspeicher vorhanden, um den Vorgang abzuschließen.
STATUS_OBJECT_NAME_EXISTS
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)

Weitere Informationen

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceCreate

WdfWmiProviderGetDevice