Freigeben über


SWbemObject.PutAsync_-Methode

Die PutAsync\_-Methode von SWbemObject erstellt oder aktualisiert asynchron ein Instanz- oder Klassenobjekt für die Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI). Sie können diese Methode verwenden, wenn Sie Eigenschaften oder Methoden in SWbemObject geändert haben und Ihre Änderungen in WMI geschrieben werden.

Eine Erläuterung dieser Syntax finden Sie unter Dokumentkonventionen für die Skripterstellungs-API.

Syntax

SWbemObject.PutAsync_( _
  ByVal objWbemSink, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parameter

objWbemSink [in]

Erforderlich. Objektsenke, die das Ergebnis des Put-Vorgangs asynchron empfängt.

iFlags [in, optional]

Bestimmt, ob der Aufruf die Klasse oder Instanz erstellt oder aktualisiert und ob der Aufruf sofort eine Antwort zurückgibt. Dieser Parameter kann die folgenden Werte annehmen.

wbemChangeFlagUpdateCompatible (0 (0x0))

Ermöglicht das Aktualisieren einer Klasse, wenn keine abgeleiteten Klassen und keine Instanzen für diese Klasse vorhanden sind. Er lässt auch Aktualisierungen in allen Fällen zu, wenn die Änderung nur an unwichtigen Qualifizierern (z B. dem Qualifizierer Beschreibung) vorgenommen wird. Dies ist das Standardverhalten für diesen Aufruf und wird verwendet, um Kompatibilität mit früheren Versionen von WMI zu gewährleisten. Wenn die Klasse Instanzen hat, ist die Aktualisierung nicht erfolgreich.

wbemChangeFlagUpdateSafeMode (32 (0x20))

Ermöglicht das Aktualisieren von Klassen, auch wenn untergeordnete Klassen vorhanden sind, sofern die Änderung keine Konflikte mit untergeordneten Klassen verursacht. Sie können dieses Flag verwenden, wenn Sie einer Basisklasse eine neue Eigenschaft hinzufügen, die vorher in keiner der untergeordneten Klassen erwähnt wurde. Wenn die Klasse Instanzen hat, ist die Aktualisierung nicht erfolgreich.

WbemChangeFlagUpdateForceMode (64 (0x40))

Erzwingt Aktualisierungen von Klassen, wenn in Konflikt stehende untergeordnete Klassen vorhanden sind. Dieses Flag erzwingt beispielsweise eine Aktualisierung, wenn ein Klassenqualifizierer in einer untergeordneten Klasse definiert wurde und die Basisklasse versucht, den gleichen Qualifizierer so hinzuzufügen, dass ein Konflikt mit der vorhandenen Klasse entsteht. Im Erzwingungsmodus wird dieser Konflikt gelöst, indem der in Konflikt stehende Qualifizierer in der untergeordneten Klasse gelöscht wird. Wenn die Klasse über Instanzen verfügt, ist die Aktualisierung nicht erfolgreich.

Wenn der Erzwingungsmodus zum Aktualisieren einer statischen Klasse verwendet wird, werden alle Instanzen dieser Klasse gelöscht. Bei einer erzwungenen Aktualisierung einer Anbieterklasse werden keine Instanzen der Klasse gelöscht.

wbemChangeFlagCreateOrUpdate (0 (0x0))

Bewirkt, dass die Klasse oder Instanz erstellt wird, falls sie noch nicht vorhanden ist. Ist sie bereits vorhanden, wird sie überschrieben.

wbemChangeFlagCreateOnly (2 (0x2))

Wird nur für die Erstellung verwendet. Der Aufruf ist nicht erfolgreich, wenn die Klasse oder Instanz bereits vorhanden ist.

wbemChangeFlagUpdateOnly (1 (0x1))

Bewirkt, dass dieser Aufruf eine Aktualisierung durchführt. Die Klasse oder Instanz muss vorhanden sein, damit der Aufruf erfolgreich ist.

wbemFlagReturnImmediately (16 (0x10))

Bewirkt, dass der Aufruf sofort abgeschlossen wird.

wbemFlagReturnWhenComplete (0 (0x0))

Bewirkt, dass dieser Aufruf so lange blockiert wird, bis die Abfrage abgeschlossen ist.

wbemFlagSendStatus (128 (0x80))

Bewirkt, dass asynchrone Aufrufe Statusupdates an den SWbemSink.OnProgress-Ereignishandler für die Objektsenke senden.

wbemFlagDontSendStatus (0 (0x0))

Verhindert, dass asynchrone Aufrufe Statusupdates an den OnProgress-Ereignishandler für die Objektsenke senden.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Bewirkt, dass WMI Klassenänderungsdaten zusammen mit der Basisklassendefinition schreibt. Weitere Informationen zu geänderten Qualifizierern finden Sie unter Lokalisieren von WMI-Klasseninformationen.

objWbemNamedValueSet [in, optional]

In der Regel nicht definiert. Andernfalls handelt es sich um ein SWbemNamedValueSet-Objekt, dessen Elemente die Kontextinformationen darstellen, die von dem Anbieter, der die Anforderung verarbeitet, verwendet werden können. Ein Anbieter, der diese Informationen unterstützt oder benötigt, muss die erkannten Wertnamen, den Datentyp des Werts, die zulässigen Werte und die Semantik dokumentieren.

objWbemAsyncContext [in, optional]

Dies ist ein SWbemNamedValueSet-Objekt, das an die Objektsenke zurückgegeben wird, um die Quelle des ursprünglichen asynchronen Aufrufs zu identifizieren. Verwenden Sie diesen Parameter, wenn Sie mehrere asynchrone Aufrufe mithilfe derselben Objektsenke ausführen. Zur Verwendung dieses Parameters erstellen Sie ein SWbemNamedValueSet-Objekt und verwenden die SWbemNamedValueSet.Add-Methode, um einen Wert hinzuzufügen, der den asynchronen Aufruf identifiziert, den Sie ausführen. Dieses SWbemNamedValueSet-Objekt wird an die Objektsenke zurückgegeben, und die Quelle des Aufrufs kann mithilfe der SWbemNamedValueSet.Item-Methode extrahiert werden. Weitere Informationen finden Sie unter Aufrufen einer Methode.

Rückgabewert

Diese Methode gibt keinen Wert zurück. Wenn der Aufruf erfolgreich ist, empfängt das OnObjectPut-Ereignis der angegebenen Objektsenke ein SWbemObjectPath-Objekt, das den Objektpfad der Instanz oder Klasse enthält, die in WMI erfolgreich committet wurde.

Fehlercodes

Nach Abschluss der PutAsync_-Methode enthält das Err-Objekt möglicherweise einen der Fehlercodes aus der folgenden Liste.

wbemErrAccessDenied – 2147749891 (0x80041003)

Der aktuelle Benutzer ist nicht berechtigt, eine Instanz der angegebenen Klasse zu aktualisieren.

wbemErrAlreadyExists – 2147749913 (0x80041019)

Das Flag wbemChangeFlagCreateOnly wurde angegeben, aber die Instanz ist bereits vorhanden.

wbemErrFailed – 2147749889 (0x80041001)

Unbekannter Fehler.

wbemErrIllegalNull – 2147749898 (0x8004100A)

Für eine Eigenschaft, die nicht Nothing sein darf, wurde der Wert Nothing angegeben. Ein Beispiel hierfür ist eine Eigenschaft, die durch einen der Qualifizierer Key, Indexed oder Not_Null gekennzeichnet ist.

wbemErrInvalidObject – 2147749908 (0x80041014)

Die angegebene Instanz ist ungültig.

wbemErrInvalidParameter – 2147749896 (0x80041008)

Ein angegebener Parameter ist ungültig.

wbemErrNotFound – 2147749890 (0x80041002)

Das Flag wbemChangeFlagUpdateOnly wurde angegeben, aber die Instanz oder Klasse ist nicht vorhanden.

wbemErrIncompleteClass – 2147749920 (0x80041020)

Es wurden nicht alle erforderlichen Eigenschaften für Klassen festgelegt.

wbemErrOutOfMemory – 2147749894 (0x80041006)

Es ist nicht genügend Arbeitsspeicher zum Abschließen des Vorgangs vorhanden.

Bemerkungen

Dieser Aufruf gibt sofort eine Antwort zurück, und das Ergebnis des Put-Vorgangs wird an die aufrufende Funktion durch Rückrufe zurückgegeben, die an die in objWbemSink angegebene Senke übermittelt werden. Implementieren Sie die objWbemSink. OnObjectPut-Methode, um den Objektpfad der Instanz oder Klasse abzurufen, die in das WMI-Repository geschrieben wird. Weitere Informationen zu Senkenmethoden finden Sie unter Aufrufen einer Methode.

Ein asynchroner Rückruf ermöglicht es einem nicht authentifizierten Benutzer, Daten für die Senke bereitzustellen. Dies stellt Sicherheitsrisiken für Ihre Skripts und Anwendungen dar. Um die Risiken zu vermeiden, verwenden Sie semisynchrone oder synchrone Kommunikation. Weitere Informationen finden Sie unter Aufrufen einer Methode.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista
Unterstützte Mindestversion (Server)
Windows Server 2008
Header
Wbemdisp.h
Typbibliothek
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

Weitere Informationen

SWbemObject

SWbemObjectPath.Class

SWbemProperty

SWbemQualifier