SWbemServices.ExecQueryAsync 메서드
SWbemServices 개체의 ExecQueryAsync 메서드는 개체를 검색하는 쿼리를 실행합니다. 이 메서드에 대한 호출이 즉시 반환되고 결과와 상태는 objWbemSink에 지정된 싱크에 전달된 이벤트를 통해 호출자에게 반환됩니다. 반환된 각 개체를 처리하려면 objWbemSink.OnObjectReady 이벤트 서브루틴을 만듭니다.
이 메서드는 비동기 모드에서 호출됩니다. 자세한 내용은 메서드 호출을 참조하세요.
이 구문에 대한 설명은 스크립팅 API의 문서 규칙을 참조하세요.
구문
objWbemObjectSet = .ExecQueryAsync( _
[ ByVal objWbemSink ], _
ByVal strQuery, _
[ ByVal strQueryLanguage ], _
[ ByVal iFlags ], _
[ ByVal objwbemNamedValueSet ], _
[ ByVal objWbemAsyncContext ] _
)
매개 변수
-
objWbemSink [optional]
-
쿼리를 비동기적으로 실행하는 개체 싱크입니다. 개체를 수신할 SWbemSink 개체를 만듭니다.
-
strQuery
-
필수 요소. 쿼리의 텍스트를 포함하는 문자열입니다. 이 매개 변수는 공백일 수 없습니다. WMI 쿼리 문자열을 빌드하는 방법에 대한 자세한 내용은 WQL을 사용하여 쿼리 및 WQL 참조를 참조하세요.
-
strQueryLanguage [optional]
-
사용할 쿼리 언어를 포함하는 문자열입니다. 지정된 경우 값은 “WQL”이어야 합니다.
-
iFlags [optional]
-
쿼리의 동작을 결정하는 정수입니다. 이 매개 변수는 다음 값을 허용할 수 있습니다.
-
wbemFlagSendStatus (128 (0x80))
-
비동기 호출이 개체 싱크에 대한 OnProgress 이벤트 처리기로 상태 업데이트를 보내도록 합니다.
-
wbemFlagDontSendStatus (0 (0x0))
-
비동기 호출이 개체 싱크에 대한 OnProgress 이벤트 처리기로 상태 업데이트를 보내지 않도록 방지합니다.
-
wbemQueryFlagPrototype (2 (0x2))
-
프로토타입에 사용됩니다. 쿼리 실행을 중지하고 대신 일반적인 결과 개체처럼 보이는 개체를 반환합니다.
-
wbemFlagUseAmendedQualifiers (131072 (0x20000))
-
WMI가 기본 클래스 정의와 함께 클래스 수정 데이터를 반환하도록 합니다. 자세한 내용은 WMI 클래스 정보 지역화를 참조하세요.
objwbemNamedValueSet [optional]
일반적으로 이는 정의되지 않습니다. 그렇지 않으면 요청을 서비스하는 공급자가 사용할 수 있는 컨텍스트 정보를 나타내는 요소가 있는 SWbemNamedValueSet 개체입니다. 컨텍스트 정보를 지원하거나 요구하는 공급자는 인식된 값 이름, 값의 데이터 형식, 허용된 값 및 의미 체계를 문서화해야 합니다.
objWbemAsyncContext [optional]
원래 비동기 호출의 소스를 식별하기 위해 개체 싱크로 반환되는 SWbemNamedValueSet 개체입니다. 동일한 개체 싱크를 사용하여 여러 비동기 호출을 수행하려면 이 매개 변수를 사용합니다. 이 매개 변수를 사용하려면 SWbemNamedValueSet 개체를 만들고 SWbemNamedValueSet.Add 메서드를 사용하여 수행 중인 비동기 호출을 식별하는 값을 추가합니다. 이 SWbemNamedValueSet 개체는 개체 싱크로 반환되며 SWbemNamedValueSet.Item 메서드를 사용하여 호출 소스를 추출할 수 있습니다. 자세한 내용은 메서드 호출을 참조하세요.
반환 값
이 메서드에는 반환 값이 없습니다. 성공하면 싱크는 인스턴스당 OnObjectReady 이벤트를 수신합니다. 마지막 인스턴스 이후 개체 싱크는 OnCompleted 이벤트를 수신합니다.
오류 코드
ExecQueryAsync 메서드가 완료되면 Err 개체에 다음 목록의 오류 코드 중 하나가 포함될 수 있습니다.
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
현재 사용자는 결과 집합을 볼 수 있는 권한이 없습니다.
-
wbemErrFailed - 2147749889(0x80041001)
-
알 수 없는 오류입니다.
-
wbemErrInvalidParameter - 2147749896(0x80041008)
-
잘못된 매개 변수가 지정되었습니다.
-
wbemErrInvalidQuery - 2147749911(0x80041017)
-
쿼리 구문이 잘못되었습니다.
-
wbemErrInvalidQueryType - 2147749912(0x80041018)
-
요청된 쿼리 언어는 지원되지 않습니다.
-
wbemErrOutOfMemory - 2147749894(0x80041006)
-
메모리가 부족하여 작업을 완료할 수 없습니다.
설명
이 호출은 즉시 반환됩니다. 요청된 개체 및 상태는 objWbemSink에 지정된 싱크에 전달된 콜백을 통해 호출자에게 반환됩니다. 반환할 때 각 개체를 처리하려면 objWbemSink.OnObjectReady 이벤트 서브루틴을 만듭니다. 모든 개체가 반환된 후 objWbemSink.OnCompleted 이벤트 구현 시 최종 처리를 수행합니다.
비동기 콜백을 사용하면 인증되지 않은 사용자가 싱크에 데이터를 제공할 수 있습니다. 이렇게 하면 스크립트 및 애플리케이션에 보안 위험이 발생합니다. 위험을 제거하려면 비동기 호출에서 보안 설정을 참조하세요.
ExecQueryAsync 메서드는 쿼리의 조건과 일치하는 개체가 없는 경우 빈 결과 집합을 반환합니다. 이 메서드는 strQuery 매개 변수에서 Key 속성이 요청되었는지 여부에 관계없이 키 속성을 반환합니다.
WQL 쿼리에 사용할 수 있는 AND 및 OR 키워드의 수에는 제한이 있습니다. 복잡한 쿼리에 사용되는 WQL 키워드가 많으면 WMI가 WBEM_E_QUOTA_VIOLATION 오류 코드를 HRESULT 값으로 반환할 수 있습니다. WQL 키워드의 제한은 쿼리가 얼마나 복잡한지에 따라 달라집니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows Vista |
지원되는 최소 서버 |
Windows Server 2008 |
헤더 |
|
유형 라이브러리 |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |