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 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
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
Zum Abschließen des Vorgangs war nicht genügend Arbeitsspeicher vorhanden.
STATUS_OBJECT_NAME_EXISTS
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)

Siehe auch

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceCreate

WdfWmiProviderGetDevice-