Metodo SWbemServices.ExecQueryAsync
Il metodo ExecQueryAsync dell'oggetto SWbemServices esegue una query per recuperare gli oggetti. La chiamata a questo metodo restituisce immediatamente e i risultati e lo stato vengono restituiti al chiamante tramite eventi recapitati al sink specificato in objWbemSink. Per gestire ogni oggetto restituito, creare un objWbemSink. Subroutine dell'evento OnObjectReady .
Il metodo viene chiamato in modalità asincrona. Per altre informazioni, vedere Chiamata di un metodo.
Per una spiegazione di questa sintassi, vedere Document Conventions per l'API di scripting.
Sintassi
objWbemObjectSet = .ExecQueryAsync( _
[ ByVal objWbemSink ], _
ByVal strQuery, _
[ ByVal strQueryLanguage ], _
[ ByVal iFlags ], _
[ ByVal objwbemNamedValueSet ], _
[ ByVal objWbemAsyncContext ] _
)
Parametri
-
objWbemSink [facoltativo]
-
Sink oggetto che esegue la query in modo asincrono. Creare un oggetto SWbemSink per ricevere gli oggetti .
-
strQuery
-
Obbligatorio. Stringa contenente il testo della query. Questo parametro non può essere vuoto. Per altre informazioni sulla compilazione di stringhe di query WMI, vedere Esecuzione di query con WQL e informazioni di riferimento su WQL .
-
strQueryLanguage [facoltativo]
-
Stringa contenente il linguaggio di query da utilizzare. Se specificato, il valore deve essere "WQL".
-
iFlags [facoltativo]
-
Intero che determina il comportamento della query. Questo parametro può accettare i valori seguenti.
-
wbemFlagSendStatus (128 (0x80))
-
Fa sì che le chiamate asincrone inviino gli aggiornamenti dello stato al gestore eventi OnProgress per il sink dell'oggetto.
-
wbemFlagDontSendStatus (0 (0x0))
-
Impedisce alle chiamate asincrone di inviare aggiornamenti dello stato al gestore eventi OnProgress per il sink dell'oggetto.
-
wbemQueryFlagPrototype (2 (0x2))
-
Usato per un prototipo. Interrompe l'esecuzione della query e restituisce invece un oggetto simile a un oggetto risultato tipico.
-
wbemFlagUseAmendedQualifiers (131072 (0x20000))
-
Fa in modo che WMI restituisca i dati di modifica della classe con la definizione della classe di base. Per altre informazioni, vedere Localizzazione delle informazioni sulla classe WMI.
objwbemNamedValueSet [facoltativo]
In genere, questo non è definito. In caso contrario, si tratta di un oggetto SWbemNamedValueSet i cui elementi rappresentano le informazioni di contesto che possono essere utilizzate dal provider che esegue la richiesta. Un provider che supporta o richiede informazioni di contesto deve documentare i nomi dei valori riconosciuti, il tipo di dati del valore, i valori consentiti e la semantica.
objWbemAsyncContext [facoltativo]
Oggetto SWbemNamedValueSet che restituisce al sink dell'oggetto per identificare l'origine della chiamata asincrona originale. Usare questo parametro per eseguire più chiamate asincrone usando lo stesso sink di oggetti. Per utilizzare questo parametro, creare un oggetto SWbemNamedValueSet e utilizzare il metodo SWbemNamedValueSet.Add per aggiungere un valore che identifica la chiamata asincrona eseguita. Questo oggetto SWbemNamedValueSet viene restituito al sink dell'oggetto e l'origine della chiamata può essere estratta usando il metodo SWbemNamedValueSet.Item . Per altre informazioni, vedere Chiamata di un metodo.
Valore restituito
Questo metodo non ha valori restituiti. In caso di esito positivo, il sink riceve un evento OnObjectReady per ogni istanza. Dopo l'ultima istanza, il sink dell'oggetto riceve un evento OnCompleted .
Codici di errore
Dopo il completamento del metodo ExecQueryAsync , l'oggetto Err può contenere uno dei codici di errore nell'elenco seguente.
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
L'utente corrente non dispone dell'autorizzazione per visualizzare il set di risultati.
-
wbemErrFailed - 2147749889 (0x80041001)
-
Errore non specificato.
-
wbemErrInvalidParameter - 2147749896 (0x80041008)
-
È stato specificato un parametro non valido.
-
wbemErrInvalidQuery - 2147749911 (0x80041017)
-
La sintassi della query non è valida.
-
wbemErrInvalidQueryType - 2147749912 (0x80041018)
-
Il linguaggio di query richiesto non è supportato.
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
Memoria insufficiente per completare l'operazione.
Commenti
Questa chiamata restituisce immediatamente. Gli oggetti e lo stato richiesti vengono restituiti al chiamante tramite callback recapitati al sink specificato in objWbemSink. Per elaborare ogni oggetto quando viene restituito, creare un oggetto objWbemSink. Subroutine dell'evento OnObjectReady . Dopo aver restituito tutti gli oggetti, eseguire l'elaborazione finale nell'implementazione di objWbemSink. Evento OnCompleted .
Un callback asincrono consente a un utente non autenticato di fornire dati al sink. Ciò comporta rischi per la sicurezza per gli script e le applicazioni. Per eliminare i rischi, vedere Impostazione della sicurezza in una chiamata asincrona
Il metodo ExecQueryAsync restituisce un set di risultati vuoto quando non sono presenti oggetti che soddisfano i criteri nella query. Questo metodo restituisce proprietà chiave indipendentemente dal fatto che la proprietà Key sia richiesta nel parametro strQuery .
Esistono limiti al numero di parole chiave AND e OR che possono essere usate nelle query WQL. Un numero elevato di parole chiave WQL usate in una query complessa può causare la restituzione di WMI del codice di errore WBEM_E_QUOTA_VIOLATION come valore HRESULT . Il limite di parole chiave WQL dipende dalla complessità della query.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista |
Server minimo supportato |
Windows Server 2008 |
Intestazione |
|
Libreria dei tipi |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |