Dela via


Funktionen ExecNotificationQueryWmi

Kör en fråga för att ta emot händelser. Anropet returneras omedelbart och anroparen kan avsöka den returnerade uppräknaren efter händelser när de anländer. När den returnerade uppräknaren släpps avbryts frågan.

Anteckning

Det här API:et är endast för internt bruk. Det är inte avsett att användas från utvecklarkod.

Syntax

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
);

Parametrar

strQueryLanguage
[in] En sträng med det giltiga frågespråket som stöds av Windows Management. Det måste vara "WQL", förkortningen för WMI Query Language.

strQuery
[in] Texten i frågan. Den här parametern får inte vara null.

lFlags
[in] En kombination av följande två flaggor som påverkar funktionens beteende. Dessa värden definieras i rubrikfilen WbemCli.h , eller så kan du definiera dem som konstanter i koden.

Konstant Värde Beskrivning
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Flaggan orsakar ett semisynkront anrop. Om den här flaggan inte har angetts misslyckas anropet. Det beror på att händelser tas emot kontinuerligt, vilket innebär att användaren måste avsöka den returnerade uppräknaren. Att blockera det här anropet på obestämd tid gör det omöjligt.
WBEM_FLAG_FORWARD_ONLY 0x20 Funktionen returnerar en framåtriktad uppräknare. Normalt är uppräknare med endast vidarebefordran snabbare och använder mindre minne än konventionella uppräknare, men de tillåter inte anrop till Klona.

pCtx
[in] Det här värdet är nullvanligtvis . Annars är det en pekare till en IWbemContext-instans som kan användas av providern som tillhandahåller de begärda händelserna.

ppEnum
[ut] Om inget fel inträffar tar emot pekaren till uppräknaren som gör att anroparen kan hämta instanserna i frågans resultatuppsättning. Mer information finns i avsnittet Kommentarer .

authLevel
[in] Auktoriseringsnivån.

impLevel
[in] Personifieringsnivån.

pCurrentNamespace
[in] En pekare till ett IWbemServices-objekt som representerar det aktuella namnområdet.

strUser
[in] Användarnamnet. Mer information finns i funktionen ConnectServerWmi .

strPassword
[in] Lösenordet. Mer information finns i funktionen ConnectServerWmi .

strAuthority
[in] Användarens domännamn. Mer information finns i funktionen ConnectServerWmi .

Returvärde

Följande värden som returneras av den här funktionen definieras i wbemCli.h-huvudfilen , eller så kan du definiera dem som konstanter i koden:

Konstant Värde Beskrivning
WBEM_E_ACCESS_DENIED 0x80041003 Användaren har inte behörighet att visa en eller flera av de klasser som funktionen kan returnera.
WBEM_E_FAILED 0x80041001 Ett ospecificerat fel har uppstått.
WBEM_E_INVALID_PARAMETER 0x80041008 En parameter är inte giltig.
WBEM_E_INVALID_CLASS 0x80041010 Frågan anger en klass som inte finns.
WBEMESS_E_REGISTRATION_TOO_PRECISE 0x80042002 För mycket precision vid leverans av händelser har begärts. En större avsökningstolerans måste anges.
WBEMESS_E_REGISTRATION_TOO_BROAD 0x80042001 Frågan begär mer information än vad Windows-hantering kan ge. Detta HRESULT returneras när en händelsefråga resulterar i en begäran om att avsöka alla objekt i ett namnområde.
WBEM_E_INVALID_QUERY 0x80041017 Frågan hade ett syntaxfel.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 Det begärda frågespråket stöds inte.
WBEM_E_QUOTA_VIOLATION 0x8004106c Frågan är för komplex.
WBEM_E_OUT_OF_MEMORY 0x80041006 Det finns inte tillräckligt med minne för att slutföra åtgärden.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI stoppades förmodligen och startades om. Anropa ConnectServerWmi igen.
WBEM_E_TRANSPORT_FAILURE 0x80041015 RPC-länken (Remote Procedure Call) mellan den aktuella processen och WMI misslyckades.
WBEM_E_UNPARSABLE_QUERY 0x80041058 Det går inte att parsa frågan.
WBEM_S_NO_ERROR 0 Funktionsanropet lyckades.

Kommentarer

Den här funktionen omsluter ett anrop till metoden IWbemServices::ExecNotificationQuery .

När funktionen har returnerats skickar anroparen regelbundet det returnerade ppEnum objektet till funktionen Nästa för att se om några händelser är tillgängliga.

Det finns gränser för antalet AND nyckelord och OR som kan användas i WQL-frågor. Ett stort antal WQL-nyckelord som används i en komplex fråga kan orsaka att WMI returnerar WBEM_E_QUOTA_VIOLATION (eller 0x8004106c) felkoden som ett HRESULT värde. Gränsen för WQL-nyckelord beror på hur komplex frågan är.

Om funktionsanropet misslyckas kan du hämta ytterligare felinformation genom att anropa funktionen GetErrorInfo .

Krav

Plattformar: Se Systemkrav.

Huvudet: WMINet_Utils.idl

.NET Framework versioner: Tillgänglig sedan 4.7.2

Se även