Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Kör en fråga för att hämta objekt.
Anteckning
Det här API:et är endast för internt bruk. Det är inte avsett att användas från utvecklarkod.
Syntax
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
);
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 flaggor som påverkar funktionens beteende. Följande värden definieras i rubrikfilen WbemCli.h , eller så kan du definiera dem som konstanter i koden:
| Konstant | Värde | Beskrivning |
|---|---|---|
WBEM_FLAG_USE_AMENDED_QUALIFIERS |
0x20000 | Om den anges hämtar funktionen de ändrade kvalificerarna som lagras i det lokaliserade namnområdet för den aktuella anslutningens nationella inställningar. Om den inte anges hämtar funktionen endast de kvalificerare som lagras i det omedelbara namnområdet. |
WBEM_FLAG_RETURN_IMMEDIATELY |
0x10 | Flaggan orsakar ett semisynkront anrop. |
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. |
WBEM_FLAG_BIDIRECTIONAL |
0 | WMI behåller pekare till objekt i uppräkningen tills de släpps. |
WBEM_FLAG_ENSURE_LOCATABLE |
0x100 | Säkerställer att alla returnerade objekt har tillräckligt med information så att systemegenskaper, till exempel __PATH, __RELPATH och __SERVER, inte nullär . |
WBEM_FLAG_PROTOTYPE |
2 | Den här flaggan används för prototyper. Den kör inte frågan och returnerar i stället ett objekt som ser ut som ett typiskt resultatobjekt. |
WBEM_FLAG_DIRECT_READ |
0x200 | Leder till direkt åtkomst till providern för den angivna klassen utan hänsyn till dess överordnade klass eller underklasser. |
De rekommenderade flaggorna är WBEM_FLAG_RETURN_IMMEDIATELY och WBEM_FLAG_FORWARD_ONLY för bästa prestanda.
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 klasserna.
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. Frågan kan ha en resultatuppsättning med noll instanser. 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_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_NOT_FOUND |
0x80041002 | Frågan anger en klass som inte finns. |
WBEM_S_NO_ERROR |
0 | Funktionsanropet lyckades. |
Kommentarer
Den här funktionen omsluter ett anrop till metoden IWbemServices::ExecQuery .
Den här funktionen bearbetar frågan som anges i parametern strQuery och skapar en uppräknare genom vilken anroparen kan komma åt frågeresultatet. Uppräknaren är en pekare till ett IEnumWbemClassObject-gränssnitt . frågeresultatet är instanser av klassobjekt som görs tillgängliga via gränssnittet IWbemClassObject .
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