SWbemServices.ExecQueryAsync-Methode

Die ExecQueryAsync-Methode des SWbemServices-Objekts führt eine Abfrage aus, um Objekte abzurufen. Der Aufruf dieser Methode gibt sofort eine Antwort zurück, und die Ergebnisse und Status werden an die aufrufende Funktion durch Ereignisse zurückgegeben, die an die Senke übermittelt werden, die in objWbemSink angegeben ist. Erstellen Sie eine objWbemSink.OnObjectReady-Ereignisunterroutine, um jedes zurückgegebene Objekt zu behandeln.

Die 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

objWbemObjectSet = .ExecQueryAsync( _
  [ ByVal objWbemSink ], _
  ByVal strQuery, _
  [ ByVal strQueryLanguage ], _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parameter

objWbemSink [optional]

Objektsenke, die die Abfrage asynchron ausführt. Erstellen Sie ein SWbemSink-Objekt, um die Objekte zu empfangen.

strQuery

Erforderlich. Eine Zeichenfolge, die den Text der Abfrage enthält. Dieser Parameter darf nicht leer sein. Weitere Informationen zum Erstellen von WMI-Abfragezeichenfolgen finden Sie unter Abfragen mit WQL sowie in der Referenz zu WQL.

strQueryLanguage [optional]

Zeichenfolge, die die zu verwendende Abfragesprache enthält. Wenn das Element angegeben wird, muss der Wert „WQL“ lauten.

iFlags [optional]

Ganze Zahl, die das Verhalten der Abfrage bestimmt. Dieser Parameter kann die folgenden Werte annehmen.

wbemFlagSendStatus (128 (0x80))

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

wbemFlagDontSendStatus (0 (0x0))

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

wbemQueryFlagPrototype (2 (0x2))

Wird für einen Prototyp verwendet. Er verhindert, dass die Abfrage ausgeführt wird, und gibt stattdessen ein Objekt zurück, das wie ein typisches Ergebnisobjekt aussieht.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Bewirkt, dass WMI Klassenänderungsdaten mit der Basisklassendefinition zurückgibt. Weitere Informationen finden Sie unter Lokalisieren von WMI-Klasseninformationen.

objwbemNamedValueSet [optional]

In der Regel nicht definiert. Andernfalls handelt es sich 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 Kontextinformationen 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 verfügt über keine Rückgabewerte. Bei erfolgreicher Ausführung empfängt die Senke ein OnObjectReady-Ereignis pro Instanz. Nach der letzten Instanz empfängt die Objektsenke ein OnCompleted-Ereignis.

Fehlercodes

Nach Abschluss der Methode InstancesOf kann das Err-Objekt einen der Fehlercodes aus der folgenden Liste enthalten.

wbemErrAccessDenied - 2147749891 (0x80041003)

Der aktuelle Benutzer bzw. die aktuelle Benutzerin verfügt nicht über die erforderlichen Berechtigungen zum Anzeigen des Resultsets.

wbemErrFailed – 2147749889 (0x80041001)

Unbekannter Fehler.

wbemErrInvalidParameter – 2147749896 (0x80041008)

Ein ungültiger Parameter wurde angegeben.

wbemErrInvalidQuery – 2147749911 (0x80041017)

Die Abfragesyntax ist ungültig.

wbemErrInvalidQueryType – 2147749912 (0x80041018)

Die angeforderte Abfragesprache wird nicht unterstützt.

wbemErrOutOfMemory – 2147749894 (0x80041006)

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

Bemerkungen

Dieser Aufruf wird sofort zurückgegeben. Die angeforderten Objekte und Status werden durch Rückrufe an die aufrufende Funktion zurückgegeben, die an die in objWbemSink angegebene Senke übermittelt werden. Erstellen Sie eine objWbemSink.OnObjectReady-Ereignisunterroutine, um jedes Objekt bei der Rückgabe zu verarbeiten. Nachdem alle Objekte zurückgegeben wurden, führen Sie die endgültige Verarbeitung in Ihrer Implementierung des objWbemSink aus.OnCompleted-Ereignisses durch.

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 zum Vermeiden der Risiken finden Sie unter Einstellen der Sicherheit bei einem asynchronen Aufruf.

Die ExecQueryAsync-Methode gibt ein leeres Resultset zurück, wenn keine Objekte vorhanden sind, die den Kriterien in der Abfrage entsprechen. Diese Methode gibt Schlüsseleigenschaften zurück, unabhängig davon, ob die EigenschaftKey im Parameter strQuery angefordert wird.

Es gibt Grenzwerte für die Anzahl von AND- und OR-Schlüsselwörtern, die in WQL-Abfragen verwendet werden können. Eine große Anzahl an WQL-Schlüsselwörtern, die in einer komplexen Abfrage verwendet werden, kann dazu führen, dass WMI den Fehlercode „WBEM_E_QUOTA_VIOLATION“ Fehlercode als HRESULT-Wert zurückgibt. Der Grenzwert für WQL-Schlüsselwörter hängt davon ab, wie komplex die Abfrage ist.

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_SWbemServices
IID
IID_ISWbemServices

Weitere Informationen

SWbemServices

Aufrufen einer Methode

SWbemServices.Get