Condividi tramite


Funzione ExecNotificationQueryWmi

Esegue una query per la ricezione di eventi. La chiamata restituisce immediatamente e il chiamante può eseguire il polling dell'enumeratore restituito per gli eventi non appena arrivano. Il rilascio dell'enumeratore restituito annulla la query.

Nota

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

Sintassi

HRESULT ExecNotificationQueryWmi (
   [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 dei due flag seguenti che influiscono sul comportamento di questa funzione. Questi valori sono definiti nel file di intestazione WbemCli.h oppure è possibile definirli come costanti nel codice.

Costante Valore Descrizione
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Il flag causa una chiamata semisynchronous. Se questo flag non è impostato, la chiamata non riesce. Ciò è dovuto al fatto che gli eventi vengono ricevuti continuamente, il che significa che l'utente deve eseguire il polling dell'enumeratore restituito. Bloccando questa chiamata per un tempo illimitato, ciò rende impossibile.
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.

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 gli eventi richiesti.

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. 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_CLASS 0x80041010 La query specifica una classe che non esiste.
WBEMESS_E_REGISTRATION_TOO_PRECISE 0x80042002 È stata richiesta una precisione eccessiva nel recapito degli eventi. È necessario specificare una tolleranza di polling maggiore.
WBEMESS_E_REGISTRATION_TOO_BROAD 0x80042001 La query richiede più informazioni rispetto a Quelle che possono essere fornite da Gestione Windows. Viene HRESULT restituito quando una query di evento genera una richiesta di polling di tutti gli oggetti in uno spazio dei nomi.
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_UNPARSABLE_QUERY 0x80041058 Impossibile analizzare la query.
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::ExecNotificationQuery .

Al termine della funzione, il chiamante passa periodicamente l'oggetto restituito ppEnum alla funzione Next per verificare se sono disponibili eventi.

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