Teilen über


SWbemServicesEx.PutAsync-Methode

Die PutAsync-Methode des SWbemServicesEx-Objekts speichert ein Objekt asynchron in einem Namespace. Bei erfolgreicher Ausführung sendet diese Methode ein OnCompleted-Ereignis an das SWbemSink-Objekt, das als Eingabeparameter angegeben ist.

Diese Methode wird im asynchronen Modus aufgerufen. Weitere Informationen finden Sie unter Aufrufen einer Methode.

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

Syntax

SWbemServicesEx.PutAsync( _
  ByVal objWbemSink, _
  ByVal ojbWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parameter

objWbemSink

Erforderlich. Objektsenke, die die Objekte asynchron empfängt. Erstellen Sie ein SWbemSink-Objekt, um die Objekte zu empfangen.

ojbWbemObject

Erforderlich. Das neue Objekt, das in den Namespace eingefügt werden soll. Dies kann ein neu erstelltes Objekt oder ein geändertes Objekt sein.

iFlags [optional]

Dieser Parameter bestimmt, ob der Aufruf das Objekt 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 die 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 über Instanzen verfügt, ist die Aktualisierung nicht erfolgreich.

wbemChangeFlagUpdateSafeMode (32 (0x20))

Ermöglicht das Aktualisieren von Klassen, auch wenn untergeordnete Klassen vorhanden sind und die Änderung keine Konflikte mit untergeordneten Klassen verursacht. Verwenden Sie dieses Flag, wenn Sie einer Basisklasse eine neue Eigenschaft hinzufügen, die vorher in keiner der untergeordneten Klassen erwähnt wird. Wenn die Klasse über Instanzen verfügt, ist die Aktualisierung nicht erfolgreich.

wbemChangeFlagUpdateForceMode (64 (0x40))

Dieses Flag 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 ist 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.

Die Nutzung des Erzwingungsmodus zum Aktualisieren einer statischen Klasse führt zum Löschen aller Instanzen dieser Klasse. 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 eine Antwort zurückgibt.

wbemFlagReturnWhenComplete (0 (0x0))

Bewirkt, dass dieser Aufruf so lange blockiert wird, bis die Abfrage abgeschlossen ist. Dieses Flag ruft die Methode im synchronen Modus auf.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Bewirkt, dass WMI Klassenänderungsdaten und die Basisklassendefinition schreibt. Weitere Informationen finden Sie unter Lokalisieren von WMI-Klasseninformationen.

objWbemNamedValueSet [optional]

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

objWbemAsyncContext [optional]

Ein SWbemNamedValueSet-Objekt, das an die Objektsenke zurückgegeben wird, um die Quelle des ursprünglichen asynchronen Aufrufs zu identifizieren. Verwenden Sie diesen Parameter, um mehrere asynchrone Aufrufe mithilfe derselben Objektsenke auszuführen. Erstellen Sie ein SWbemNamedValueSet-Objekt, um diesen Parameter zu nutzen, und verwenden Sie 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)

Der Wert NULL wurde für eine Eigenschaft angegeben, die nicht NULL sein kann. 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 die Ergebnisse und Status werden an die aufrufende Funktion durch Ereignisse zurückgegeben, die an die in objWbemSink angegebene Senke übermittelt werden. Erstellen Sie eine objWbemSink.OnObjectReady-Ereignisunterroutine, um jedes Objekt beim Eintreffen zu verarbeiten. Jede Verarbeitung, die nach dem Eintreffen aller Objekte stattfindet, erfolgt in einer Unterroutine für das objWbemSink.OnCompleted-Ereignis.

Ein asynchroner Rückruf ermöglicht es einem nicht authentifizierten Benutzenden, Daten für die Senke bereitzustellen. Dies stellt Sicherheitsrisiken für Ihre Skripts und Anwendungen dar. Informationen zur Beseitigung der Risiken finden Sie unter Festlegen der Sicherheit für einen asynchronen Aufruf.

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_ISWbemServicesEx
IID
IID_ISWbemServicesEx