Sdílet prostřednictvím


Funkce ExecQueryWmi

Spustí dotaz pro načtení objektů.

Poznámka

Toto rozhraní API je určené pouze pro interní použití. Není určen pro použití z kódu vývojáře.

Syntaxe

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

Parametry

strQueryLanguage
[v] Řetězec s platným dotazovacím jazykem podporovaným službou Windows Management. Musí to být WQL, zkratka pro WMI Query Language.

strQuery
[v] Text dotazu Tento parametr nemůže být null.

lFlags
[v] Kombinace příznaků, které ovlivňují chování této funkce. Následující hodnoty jsou definovány v hlavičkovém souboru WbemCli.h nebo je můžete definovat jako konstanty v kódu:

Konstanta Hodnota Popis
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Pokud je tato funkce nastavená, načte upravené kvalifikátory uložené v lokalizovaného oboru názvů národního prostředí aktuálního připojení.
Pokud není nastavená, funkce načte pouze kvalifikátory uložené v bezprostředním oboru názvů.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Příznak způsobí polosynchronní volání.
WBEM_FLAG_FORWARD_ONLY 0x20 Funkce vrátí dopředný enumerátor. Enumerátory pouze vpřed jsou obvykle rychlejší a využívají méně paměti než konvenční enumerátory, ale neumožňují volání Clone.
WBEM_FLAG_BIDIRECTIONAL 0 WMI uchovává ukazatele na objekty ve výčtu, dokud nebudou uvolněny.
WBEM_FLAG_ENSURE_LOCATABLE 0x100 Zajišťuje, aby všechny vrácené objekty měly dostatek informací, aby systémové vlastnosti, například __PATH, __RELPATH a __SERVER, nebyly null.
WBEM_FLAG_PROTOTYPE 2 Tento příznak se používá pro vytváření prototypů. Nespustí dotaz a místo toho vrátí objekt, který vypadá jako typický objekt výsledku.
WBEM_FLAG_DIRECT_READ 0x200 Způsobí přímý přístup k poskytovateli pro zadanou třídu bez ohledu na její nadřazenou třídu nebo jakékoli podtřídy.

Doporučené příznaky jsou WBEM_FLAG_RETURN_IMMEDIATELY a WBEM_FLAG_FORWARD_ONLY pro zajištění nejlepšího výkonu.

pCtx
[v] Tato hodnota je nullobvykle . Jinak se jedná o ukazatel na instanci IWbemContext , který může být použit zprostředkovatelem, který poskytuje požadované třídy.

ppEnum
[out] Pokud nedojde k žádné chybě, obdrží ukazatel na enumerátor, který umožňuje volajícímu načíst instance v sadě výsledků dotazu. Dotaz může mít sadu výsledků dotazu s nulovými instancemi. Další informace najdete v části Poznámky .

authLevel
[v] Úroveň autorizace.

impLevel
[v] Úroveň zosobnění.

pCurrentNamespace
[v] Ukazatel na objekt IWbemServices , který představuje aktuální obor názvů.

strUser
[v] Uživatelské jméno. Další informace najdete ve funkci ConnectServerWmi .

strPassword
[v] Heslo. Další informace najdete ve funkci ConnectServerWmi .

strAuthority
[v] Název domény uživatele. Další informace najdete ve funkci ConnectServerWmi .

Vrácená hodnota

Následující hodnoty vrácené touto funkcí jsou definovány v hlavičce souboru WbemCli.h nebo je můžete definovat jako konstanty v kódu:

Konstanta Hodnota Popis
WBEM_E_ACCESS_DENIED 0x80041003 Uživatel nemá oprávnění k zobrazení jedné nebo více tříd, které může funkce vrátit.
WBEM_E_FAILED 0x80041001 Došlo k nespecifikované chybě.
WBEM_E_INVALID_PARAMETER 0x80041008 Parametr není platný.
WBEM_E_INVALID_QUERY 0x80041017 Dotaz měl chybu syntaxe.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 Požadovaný dotazovací jazyk není podporován.
WBEM_E_QUOTA_VIOLATION 0x8004106c Dotaz je příliš složitý.
WBEM_E_OUT_OF_MEMORY 0x80041006 K dokončení operace není k dispozici dostatek paměti.
WBEM_E_SHUTTING_DOWN 0x80041033 Rozhraní WMI se pravděpodobně zastavilo a restartovalo. Znovu zavolejte ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 Propojení vzdáleného volání procedur (RPC) mezi aktuálním procesem a rozhraním WMI selhalo.
WBEM_E_NOT_FOUND 0x80041002 Dotaz určuje třídu, která neexistuje.
WBEM_S_NO_ERROR 0 Volání funkce bylo úspěšné.

Poznámky

Tato funkce zabalí volání metody IWbemServices::ExecQuery .

Tato funkce zpracuje dotaz zadaný v parametru strQuery a vytvoří enumerátor, jehož prostřednictvím má volající přístup k výsledkům dotazu. Enumerátor je ukazatel na IEnumWbemClassObject rozhraní; výsledky dotazu jsou instance objektů třídy zpřístupněné prostřednictvím rozhraní IWbemClassObject .

Počet AND klíčových slov a OR , která lze použít v dotazech jazyka WQL, jsou omezena. Velký počet klíčových slov jazyka WQL použitých v komplexním dotazu může způsobit, že rozhraní WMI vrátí WBEM_E_QUOTA_VIOLATION kód chyby (nebo 0x8004106c) jako hodnotu HRESULT . Limit klíčových slov jazyka WQL závisí na tom, jak složitý je dotaz.

Pokud volání funkce selže, můžete získat další informace o chybě voláním funkce GetErrorInfo .

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: WMINet_Utils.idl

Verze rozhraní .NET Framework: K dispozici od verze 4.7.2

Viz také