Udostępnij przez


ExecNotificationQueryWmi, funkcja

Wykonuje zapytanie w celu odbierania zdarzeń. Wywołanie jest zwracane natychmiast, a obiekt wywołujący może sondować zwrócony moduł wyliczający pod kątem zdarzeń w miarę ich nadejścia. Zwolnienie zwróconego modułu wyliczającego anuluje zapytanie.

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

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 następujących dwóch flag, które wpływają na zachowanie tej funkcji. Te 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_RETURN_IMMEDIATELY 0x10 Flaga powoduje wywołanie semisynchroniczne. Jeśli ta flaga nie jest ustawiona, wywołanie zakończy się niepowodzeniem. Dzieje się tak, ponieważ zdarzenia są odbierane w sposób ciągły, co oznacza, że użytkownik musi sondować zwrócony moduł wyliczający. Zablokowanie tego wywołania w nieskończoność sprawia, że niemożliwe.
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.

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 zdarzenia.

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. 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_CLASS 0x80041010 Zapytanie określa klasę, która nie istnieje.
WBEMESS_E_REGISTRATION_TOO_PRECISE 0x80042002 Zażądano zbyt dużej precyzji w dostarczaniu zdarzeń. Należy określić większą tolerancję sondowania.
WBEMESS_E_REGISTRATION_TOO_BROAD 0x80042001 Zapytanie żąda więcej informacji niż usługa Windows Management może dostarczyć. Jest to HRESULT zwracane, gdy zapytanie o zdarzenie powoduje wysłanie żądania sondowania wszystkich obiektów w przestrzeni nazw.
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_UNPARSABLE_QUERY 0x80041058 Nie można przeanalizować kwerendy.
WBEM_S_NO_ERROR 0 Wywołanie funkcji zakończyło się pomyślnie.

Uwagi

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

Po powrocie funkcji obiekt wywołujący okresowo przekazuje zwrócony ppEnum obiekt do funkcji Next , aby sprawdzić, czy są dostępne jakiekolwiek zdarzenia.

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ż