Udostępnij przez


ExecQueryWmi, funkcja

Wykonuje zapytanie w celu pobrania obiektów.

Uwaga

Ten interfejs API jest przeznaczony tylko do użytku wewnętrznego. Nie jest przeznaczony do użycia z poziomu kodu dewelopera.

Składnia

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
[in] Ciąg z prawidłowym językiem zapytań obsługiwanym przez zarządzanie systemem Windows. Musi to być "WQL", akronim języka zapytań WMI.

strQuery
[in] Tekst zapytania. Ten parametr nie może mieć wartości null.

lFlags
[in] Kombinacja flag wpływających na zachowanie tej funkcji. Następujące wartości są definiowane w pliku nagłówkowym WbemCli.h lub można je zdefiniować jako stałe w kodzie:

Stała Wartość Opis
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 W przypadku ustawienia funkcja pobiera zmienione kwalifikatory przechowywane w zlokalizowanej przestrzeni nazw ustawień regionalnych bieżącego połączenia.
Jeśli nie zostanie ustawiona, funkcja pobiera tylko kwalifikatory przechowywane w bezpośredniej przestrzeni nazw.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Flaga powoduje wywołanie semisynchroniczne.
WBEM_FLAG_FORWARD_ONLY 0x20 Funkcja zwraca moduł wyliczający tylko do przodu. Zazwyczaj moduły wyliczania tylko do przodu są szybsze i używają mniejszej ilości pamięci niż konwencjonalne moduły wyliczania, ale nie zezwalają na wywołania klonowania.
WBEM_FLAG_BIDIRECTIONAL 0 Usługa WMI zachowuje wskaźniki do obiektów w wyliczeń do momentu ich wydania.
WBEM_FLAG_ENSURE_LOCATABLE 0x100 Zapewnia, że wszystkie zwrócone obiekty mają wystarczającą ilość informacji, tak aby właściwości systemowe, takie jak __PATH, __RELPATH i __SERVER, nie nullsą .
WBEM_FLAG_PROTOTYPE 2 Ta flaga jest używana do tworzenia prototypów. Nie wykonuje zapytania i zamiast tego zwraca obiekt, który wygląda jak typowy obiekt wyniku.
WBEM_FLAG_DIRECT_READ 0x200 Powoduje bezpośredni dostęp do dostawcy dla klasy określonej bez względu na jej klasę nadrzędną lub podklasy.

Zalecane flagi to WBEM_FLAG_RETURN_IMMEDIATELY i WBEM_FLAG_FORWARD_ONLY w celu uzyskania najlepszej wydajności.

pCtx
[in] Zazwyczaj ta wartość to null. W przeciwnym razie jest to wskaźnik do wystąpienia IWbemContext , który może być używany przez dostawcę dostarczającego żądane klasy.

ppEnum
[out] Jeśli żaden błąd nie wystąpi, odbierze wskaźnik do modułu wyliczającego, który umożliwia wywołującym pobranie wystąpień w zestawie wyników zapytania. Zapytanie może mieć zestaw wyników z zerowymi wystąpieniami. Aby uzyskać więcej informacji, zobacz sekcję Uwagi .

authLevel
[in] Poziom autoryzacji.

impLevel
[in] Poziom personifikacji.

pCurrentNamespace
[in] Wskaźnik do obiektu IWbemServices , który reprezentuje bieżącą przestrzeń nazw.

strUser
[in] Nazwa użytkownika. Aby uzyskać więcej informacji, zobacz funkcję ConnectServerWmi .

strPassword
[in] Hasło. Aby uzyskać więcej informacji, zobacz funkcję ConnectServerWmi .

strAuthority
[in] Nazwa domeny użytkownika. Aby uzyskać więcej informacji, zobacz funkcję ConnectServerWmi .

Wartość zwracana

Następujące wartości zwracane przez tę funkcję są definiowane w pliku nagłówkowym WbemCli.h lub można je zdefiniować jako stałe w kodzie:

Stała Wartość Opis
WBEM_E_ACCESS_DENIED 0x80041003 Użytkownik nie ma uprawnień do wyświetlania co najmniej jednej klasy, którą funkcja może zwrócić.
WBEM_E_FAILED 0x80041001 Wystąpił nieokreślony błąd.
WBEM_E_INVALID_PARAMETER 0x80041008 Parametr jest nieprawidłowy.
WBEM_E_INVALID_QUERY 0x80041017 Zapytanie miało błąd składni.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 Żądany język zapytań nie jest obsługiwany.
WBEM_E_QUOTA_VIOLATION 0x8004106c Zapytanie jest zbyt złożone.
WBEM_E_OUT_OF_MEMORY 0x80041006 Za mało pamięci, aby ukończyć operację.
WBEM_E_SHUTTING_DOWN 0x80041033 Usługa WMI została prawdopodobnie zatrzymana i uruchomiona ponownie. Ponownie wywołaj metodę ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 Połączenie zdalnego wywołania procedury (RPC) między bieżącym procesem a usługą WMI nie powiodło się.
WBEM_E_NOT_FOUND 0x80041002 Zapytanie określa klasę, która nie istnieje.
WBEM_S_NO_ERROR 0 Wywołanie funkcji zakończyło się pomyślnie.

Uwagi

Ta funkcja opakowuje wywołanie metody IWbemServices::ExecQuery .

Ta funkcja przetwarza zapytanie określone w parametrze strQuery i tworzy moduł wyliczający, za pomocą którego obiekt wywołujący może uzyskać dostęp do wyników zapytania. Moduł wyliczający jest wskaźnikiem do interfejsu IEnumWbemClassObject ; wyniki zapytania to wystąpienia obiektów klas udostępnianych za pośrednictwem interfejsu IWbemClassObject .

Istnieją ograniczenia liczby AND słów kluczowych i OR , które mogą być używane w zapytaniach WQL. Duża liczba słów kluczowych WQL używanych w złożonym zapytaniu może spowodować, że usługa WMI zwróci WBEM_E_QUOTA_VIOLATION kod błędu (lub 0x8004106c) jako HRESULT wartość. Limit słów kluczowych WQL zależy od tego, jak złożone jest zapytanie.

Jeśli wywołanie funkcji zakończy się niepowodzeniem, możesz uzyskać dodatkowe informacje o błędzie, wywołując funkcję GetErrorInfo .

Wymagania

Platformy: Zobacz Wymagania systemowe.

Nagłówka: WMINet_Utils.idl

wersje .NET Framework: dostępne od wersji 4.7.2

Zobacz też