다음을 통해 공유


ExecNotificationQueryWmi 함수

쿼리를 실행하여 이벤트를 수신합니다. 호출은 즉시 반환되고 호출자는 이벤트가 도착할 때 반환된 열거자를 폴링할 수 있습니다. 반환된 열거자를 해제하면 쿼리가 취소됩니다.

참고

이 API는 내부 전용입니다. 개발자 코드에서 사용할 수 없습니다.

구문

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

매개 변수

strQueryLanguage
[in] Windows 관리에서 지원하는 유효한 쿼리 언어가 있는 문자열입니다. WMI Query Language의 약어인 "WQL"이어야 합니다.

strQuery
[in] 쿼리의 텍스트입니다. 이 매개 변수는 null일 수 없습니다.

lFlags
[in] 이 함수의 동작에 영향을 주는 다음 두 플래그의 조합입니다. 이러한 값은 WbemCli.h 헤더 파일에 정의되어 있거나 코드에서 상수로 정의할 수 있습니다.

상수 Description
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 플래그는 반동기 호출을 발생합니다. 이 플래그를 설정하지 않으면 호출이 실패합니다. 이는 이벤트가 지속적으로 수신되기 때문입니다. 즉, 사용자는 반환된 열거자를 폴링해야 합니다. 이 호출을 무기한 차단하는 것은 불가능합니다.
WBEM_FLAG_FORWARD_ONLY 0x20 이 함수는 정방향 전용 열거자를 반환합니다. 일반적으로 정방향 전용 열거자가 더 빠르며 기본 열거자보다 적은 메모리를 사용하지만 Clone 호출을 허용하지 않습니다.

pCtx
[in] 일반적으로 이 값은 null입니다. 그렇지 않으면 요청된 이벤트를 제공하는 공급자가 사용할 수 있는 IWbemContext 인스턴스에 대한 포인터입니다.

ppEnum
[out] 오류가 발생하지 않으면 호출자가 쿼리의 결과 집합에서 인스턴스를 쿼리할 수 있도록 하는 열거자에 대한 포인터를 받습니다. 자세한 내용은 설명 섹션을 참조하세요.

authLevel
[in] 권한 부여 수준입니다.

impLevel
[in] 가장 수준입니다.

pCurrentNamespace
[in] 현재 네임스페이스를 나타내는 IWbemServices 개체에 대한 포인터입니다.

strUser
[in] 사용자 이름입니다. 자세한 내용은 ConnectServerWmi 함수를 참조하세요.

strPassword
[in] 암호입니다. 자세한 내용은 ConnectServerWmi 함수를 참조하세요.

strAuthority
[in] 사용자의 도메인 이름입니다. 자세한 내용은 ConnectServerWmi 함수를 참조하세요.

반환 값

이 함수가 반환하는 다음 값은 WbemCli.h 헤더 파일에 정의되어 있거나 코드에서 상수로 정의할 수 있습니다.

상수 Description
WBEM_E_ACCESS_DENIED 0x80041003 사용자는 함수가 반환할 수 있는 하나 이상의 클래스를 볼 수 있는 권한이 없습니다.
WBEM_E_FAILED 0x80041001 알 수 없는 오류가 발생했습니다.
WBEM_E_INVALID_PARAMETER 0x80041008 매개 변수가 잘못된 경우
WBEM_E_INVALID_CLASS 0x80041010 쿼리에서 존재하지 않는 지정한 클래스를 지정합니다.
WBEMESS_E_REGISTRATION_TOO_PRECISE 0x80042002 이벤트 전송에 너무 많은 정밀도가 요청되었습니다. 더 큰 폴링 허용 오차를 지정해야 합니다.
WBEMESS_E_REGISTRATION_TOO_BROAD 0x80042001 쿼리는 Windows Management에서 제공할 수 있는 것보다 더 많은 정보를 요청합니다. 이벤트 쿼리로 인해 네임스페이스의 모든 개체를 폴링하도록 요청되면 이 HRESULT가 반환됩니다.
WBEM_E_INVALID_QUERY 0x80041017 쿼리에 구문 오류가 있습니다.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 요청된 쿼리 언어가 지원되지 않는 경우
WBEM_E_QUOTA_VIOLATION 0x8004106c 쿼리가 너무 복잡합니다.
WBEM_E_OUT_OF_MEMORY 0x80041006 메모리가 부족 하 여 작업을 완료할 수 없습니다.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI가 중지되었다가 다시 시작되었을 수 있습니다. ConnectServerWmi를 다시 호출합니다.
WBEM_E_TRANSPORT_FAILURE 0x80041015 현재 프로세스와 WMI 간의 RPC(원격 프로시저 호출) 링크가 실패했습니다.
WBEM_E_UNPARSABLE_QUERY 0x80041058 쿼리를 구문 분석할 수 없습니다.
WBEM_S_NO_ERROR 0 함수 호출에 성공했습니다.

설명

이 함수는 IWbemServices::ExecNotificationQuery 메서드에 대한 호출을 래핑합니다.

함수가 반환된 후 호출자는 반환된 ppEnum 개체를 Next 함수에 주기적으로 전달하여 사용할 수 있는 이벤트가 있는지 확인합니다.

WQL 쿼리에서 사용할 수 있는 ANDOR 키워드의 수에 제한이 있습니다. 복잡한 쿼리에 사용되는 WQL 키워드가 많으면 WMI가 WBEM_E_QUOTA_VIOLATION(또는 0x8004106c) 오류 코드를 HRESULT 값으로 반환할 수 있습니다. WQL 키워드의 제한은 쿼리가 얼마나 복잡한지에 따라 달라집니다.

함수 호출이 실패하면 GetErrorInfo 함수를 호출하여 추가 오류 정보를 얻을 수 있습니다.

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: WMINet_Utils.idl

.NET Framework 버전: 4.7.2부터 사용 가능

참고 항목