Condividi tramite


Funzione ExecQueryWmi

Esegue una query per il recupero di oggetti.

Nota

Questa API è solo per uso interno. Non è destinata all'uso dal codice dello sviluppatore.

Sintassi

HRESULT ExecQueryWmi (
   [in] BSTR                    strQueryLanguage,
   [in] BSTR                    strQuery,
   [in] long                    lFlags,
   [in] IWbemContext*           pCtx,
   [out] IEnumWbemClassObject** ppEnum,
   [in] DWORD                   authLevel,
   [in] DWORD                   impLevel,
   [in] IWbemServices*          pCurrentNamespace,
   [in] BSTR                    strUser,
   [in] BSTR                    strPassword,
   [in] BSTR                    strAuthority
);

Parametri

strQueryLanguage
[in] Stringa con il linguaggio di query valido supportato da Gestione Windows. Deve essere "WQL", acronimo di WMI Query Language.

strQuery
[in] Testo della query. Questo parametro non può essere null.

lFlags
[in] Combinazione di flag che influiscono sul comportamento di questa funzione. I valori seguenti sono definiti nel file di intestazione WbemCli.h oppure è possibile definirli come costanti nel codice:

Costante Valore Descrizione
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Se impostato, la funzione recupera i qualificatori modificati archiviati nello spazio dei nomi localizzato delle impostazioni locali della connessione corrente.
Se non impostato, la funzione recupera solo i qualificatori archiviati nello spazio dei nomi immediato.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Il flag causa una chiamata semisynchronous.
WBEM_FLAG_FORWARD_ONLY 0x20 La funzione restituisce un enumeratore forward-only. In genere, gli enumeratori forward-only sono più veloci e usano meno memoria rispetto agli enumeratori convenzionali, ma non consentono chiamate a Clone.
WBEM_FLAG_BIDIRECTIONAL 0 WMI mantiene i puntatori agli oggetti nell'enumerazione fino a quando non vengono rilasciati.
WBEM_FLAG_ENSURE_LOCATABLE 0x100 Assicura che tutti gli oggetti restituiti dispongano di informazioni sufficienti in modo che le proprietà di sistema, ad esempio __PATH, __RELPATH e __SERVER, non nullsiano .
WBEM_FLAG_PROTOTYPE 2 Questo flag è utilizzato per la creazione di prototipi. Non esegue la query e restituisce invece un oggetto simile a un oggetto risultato tipico.
WBEM_FLAG_DIRECT_READ 0x200 Determina l'accesso diretto al provider per la classe specificata, indipendentemente dalla relativa classe padre o da eventuali sottoclassi.

I flag consigliati sono WBEM_FLAG_RETURN_IMMEDIATELY e WBEM_FLAG_FORWARD_ONLY per ottenere prestazioni ottimali.

pCtx
[in] In genere, questo valore è null. In caso contrario, si tratta di un puntatore a un'istanza IWbemContext che può essere usata dal provider che fornisce le classi richieste.

ppEnum
[out] Se non si verifica alcun errore, riceve il puntatore all'enumeratore che consente al chiamante di recuperare le istanze nel set di risultati della query. La query può avere un set di risultati con zero istanze. Per altre informazioni, vedere la sezione Osservazioni .

authLevel
[in] Livello di autorizzazione.

impLevel
[in] Livello di rappresentazione.

pCurrentNamespace
[in] Puntatore a un oggetto IWbemServices che rappresenta lo spazio dei nomi corrente.

strUser
[in] Nome utente. Per altre informazioni, vedere la funzione ConnectServerWmi .

strPassword
[in] Password. Per altre informazioni, vedere la funzione ConnectServerWmi .

strAuthority
[in] Nome di dominio dell'utente. Per altre informazioni, vedere la funzione ConnectServerWmi .

Valore restituito

I valori seguenti restituiti da questa funzione sono definiti nel file di intestazione WbemCli.h oppure è possibile definirli come costanti nel codice:

Costante Valore Descrizione
WBEM_E_ACCESS_DENIED 0x80041003 L'utente non dispone dell'autorizzazione per visualizzare una o più classi che la funzione può restituire.
WBEM_E_FAILED 0x80041001 Si è verificato un errore non specificato.
WBEM_E_INVALID_PARAMETER 0x80041008 Un parametro non è valido.
WBEM_E_INVALID_QUERY 0x80041017 La query ha generato un errore di sintassi.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 Il linguaggio della query richiesta non è supportato.
WBEM_E_QUOTA_VIOLATION 0x8004106c La query è troppo complessa.
WBEM_E_OUT_OF_MEMORY 0x80041006 Memoria insufficiente per completare l’operazione.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI è stato probabilmente arrestato e riavviato. Chiamare di nuovo ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 Il collegamento RPC (Remote Procedure Call) tra il processo corrente e WMI non è riuscito.
WBEM_E_NOT_FOUND 0x80041002 La query specifica una classe che non esiste.
WBEM_S_NO_ERROR 0 La chiamata di funzione ha avuto esito positivo.

Commenti

Questa funzione esegue il wrapping di una chiamata al metodo IWbemServices::ExecQuery .

Questa funzione elabora la query specificata nel strQuery parametro e crea un enumeratore tramite il quale il chiamante può accedere ai risultati della query. L'enumeratore è un puntatore a un'interfaccia IEnumWbemClassObject ; i risultati della query sono istanze di oggetti classe resi disponibili tramite l'interfaccia IWbemClassObject .

Esistono limiti al numero di AND parole chiave 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 del WBEM_E_QUOTA_VIOLATION codice di errore (o 0x8004106c) di WMI come HRESULT valore. Il limite di parole chiave WQL dipende dalla complessità della query.

Se la chiamata di funzione ha esito negativo, è possibile ottenere informazioni aggiuntive sull'errore chiamando la funzione GetErrorInfo .

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: WMINet_Utils.idl

Versioni di .NET Framework: Disponibile dalla versione 4.7.2

Vedi anche