SWbemServices.ExecMethodAsync 메서드

SWbemServices 개체의 ExecMethodAsync 메서드는 메서드 공급자가 내보낸 메서드를 실행합니다. 메서드가 실행되는 적절한 공급자로 인바운드 매개 변수가 전달되는 동안 호출은 즉시 클라이언트로 반환됩니다. 정보와 상태는 objWbemSink에 지정된 싱크에 전달된 이벤트를 통해 호출자에게 반환됩니다. WMI(Windows Management Instrumentation)가 아닌 공급자가 메서드를 구현합니다.

이 메서드는 비동기 모드에서 호출됩니다. 자세한 내용은 메서드 호출을 참조하세요.

더 많은 정보와 이 구문에 대한 설명은 스크립팅 API의 문서 규칙을 참조하세요.

구문

SWbemServices.ExecMethodAsync( _
  ByVal objWbemSink, _
  ByVal strObjectPath, _
  ByVal strMethodName, _
  [ ByVal objWbemInParams ], _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

매개 변수

objWbemSink

필수 요소. 개체를 수신할 SWbemSink 개체를 만듭니다. 메서드 호출의 결과를 수신하는 개체 싱크입니다. 아웃바운드 매개 변수는 제공된 개체 싱크의 SWbemSink.OnObjectReady 이벤트로 전송됩니다. 호출 메커니즘의 결과는 제공된 개체 싱크의 SWbemSink.OnCompleted 이벤트로 전송됩니다. SWbemSink.OnCompleted는 WMI 메서드의 반환 코드를 받지 않습니다. 그러나 이것은 실제 호출 반환 메커니즘의 반환 코드를 수신하며, 호출이 발생했는지 기계적 이유로 실패했는지를 확인할 때만 유용합니다. WMI 메서드에서 반환된 결과 코드는 SWbemSink.OnObjectReady에 제공된 아웃바운드 매개 변수 개체에 반환됩니다. 오류 코드가 반환되면 제공된 IWbemObjectSink 개체가 사용되지 않습니다. 호출에 성공하면 작업의 결과를 나타내기 위해 사용자의 IWbemObjectSink 구현이 호출됩니다.

strObjectPath

필수 요소. 메서드가 실행되는 개체의 개체 경로를 포함하는 문자열입니다. 자세한 내용은 WMI 개체의 위치 설명을 참조하세요.

strMethodName

필수 요소. 실행할 메서드 이름입니다.

objWbemInParams [선택 사항]

실행 중인 메서드에 대한 입력 매개 변수가 포함된 SWbemObject 개체입니다. 기본적으로 이 매개 변수는 정의되지 않습니다. 자세한 내용은 InParameters 개체 생성 및 OutParameters 개체 구문 분석을 참조하세요.

iFlags [선택 사항]

호출의 동작을 결정하는 정수입니다. 이 매개 변수는 다음 값을 허용할 수 있습니다.

wbemFlagSendStatus (128 (0x80))

비동기 호출이 개체 싱크에 대한 OnProgress 이벤트 처리기로 상태 업데이트를 보내도록 합니다.

wbemFlagDontSendStatus (0 (0x0))

비동기 호출이 개체 싱크에 대한 OnProgress 이벤트 처리기로 상태 업데이트를 보내지 않도록 방지합니다.

objWbemNamedValueSet [선택 사항]

일반적으로 이는 정의되지 않습니다. 그렇지 않으면 요청을 서비스하는 공급자가 사용할 수 있는 컨텍스트 정보를 나타내는 요소가 있는 SWbemNamedValueSet 개체입니다. 그러한 정보를 지원하거나 요구하는 공급자는 인식된 값 이름, 값의 데이터 형식, 허용된 값 및 의미 체계를 문서화해야 합니다.

objWbemAsyncContext [선택 사항]

원래 비동기 호출의 소스를 식별하기 위해 개체 싱크로 반환되는 SWbemNamedValueSet 개체입니다. 동일한 개체 싱크를 사용하여 여러 비동기 호출을 수행하는 경우 이 매개 변수를 사용합니다. 이 매개 변수를 사용하려면 SWbemNamedValueSet 개체를 만들고 SWbemNamedValueSet.Add 메서드를 사용하여 수행 중인 비동기 호출을 식별하는 값을 추가합니다. 이 SWbemNamedValueSet 개체는 개체 싱크로 반환되며 SWbemNamedValueSet.Item 메서드를 사용하여 호출 원본을 추출할 수 있습니다. 자세한 내용은 VBScript를 사용하여 비동기 호출하기를 참조하세요.

반환 값

이 메서드는 값을 반환하지 않습니다. 호출에 성공하면 SWbemObject이기도 한 OutParameters 개체가 objWbemSink에 지정된 싱크에 제공됩니다. 반환된 OutParameters 개체에는 실행 중인 메서드의 출력 매개 변수와 반환 값이 포함됩니다. 자세한 내용은 InParameters 개체 생성 및 OutParameters 개체 구문 분석을 참조하세요.

오류 코드

ExecMethodAsync_ 메서드가 완료된 후 Err 개체에는 다음 목록에 있는 오류 코드 중 하나가 포함될 수 있습니다.

wbemErrFailed - 2147749889(0x80041001)

알 수 없는 오류입니다.

wbemErrInvalidClass - 2147749904(0x80041010)

지정된 클래스가 잘못되었습니다.

wbemErrInvalidParameter - 2147749896(0x80041008)

지정된 매개 변수가 잘못되었습니다.

wbemErrOutOfMemory - 2147749894(0x80041006)

메모리가 부족하여 작업을 완료할 수 없습니다.

wbemErrInvalidMethod - 2147749934(0x8004102E)

요청한 방법을 사용할 수 없습니다.

wbemErrAccessDenied - 2147749891(0x80041003)

현재 사용자는 메서드를 실행할 권한이 없습니다.

설명

실행된 메서드에 입력 매개 변수가 있는 경우 objWbemInParam 매개 변수의 InParameters 개체는 InParameters 개체 생성 및 OutParameters 개체 구문 분석 항목의 설명과 동일해야 합니다.

메서드를 직접 실행할 수 없는 경우 공급자 메서드를 실행하기 위한 직접 액세스 대신 SWbemServices.ExecMethodAsync를 사용합니다. 예를 들어 출력 매개 변수를 지원하지 않는 스크립팅 언어, 즉 메서드에 OUT 매개 변수가 있는 경우 사용합니다. 아니면 직접 액세스를 사용하여 메서드를 호출하는 것이 좋습니다. 자세한 내용은 클래스 및 인스턴스 정보 조작을 참조하세요.

SWbemServices.ExecMethodAsync 메서드에는 개체 경로가 필요합니다. 스크립트에 이미 SWbemObject 개체가 포함된 경우 SWbemObject.ExecMethodAsync를 호출할 수 있습니다.

이 호출은 즉시 반환됩니다. 상태 정보는 objWbemSink에 지정된 싱크에 전달된 콜백을 통해 호출자에게 반환됩니다. 호출이 완료되었을 때 처리를 계속하려면 objWbemSink.OnCompleted 이벤트에 대한 서브루틴을 구현합니다.

비동기 콜백을 사용하면 인증되지 않은 사용자가 싱크에 데이터를 제공할 수 있습니다. 이렇게 하면 스크립트 및 애플리케이션에 보안 위험이 발생합니다. 이러한 위험을 없애는 자세한 방법은 비동기 호출에서 보안 설정을 참조하세요.

objWbemAsyncContext 매개 변수를 사용하여 호출의 원본을 확인합니다.

예제

다음 코드 예제에서는 ExecMethodAsync 메서드를 보여 줍니다. 스크립트는 메모장을 실행하는 프로세스를 나타내는 Win32_Process 개체를 만듭니다. InParameters 개체의 설정과 OutParameters 개체에서 결과를 얻는 방법을 보여 줍니다. 비동기적으로 수행되는 동일한 작업을 보여 주는 스크립트는 SWbemServices.ExecMethod를 참조하세요. 직접 액세스를 사용하는 예는 Win32_Process 클래스의 메서드 만들기를 참조하세요. SWbemObject를 사용하는 동일한 작업의 예는 SWbemObject.ExecMethodAsync를 참조하세요.

' Connect to WMI.
set Services = getobject("winmgmts:root\cimv2")

' Obtain the class definition object
' of a Win32_Process object.
Set oProcess = Services.Get("Win32_Process")

' Create the SWbemMethod.InParameters object
' to hold the input parameter required
' for the Win32_Process.Create method call.
' The oProcess.Methods_("Create") call
' obtains a class object that defines
' the correct input parameters
' for the Win32_Process.Create call.
' The InParameters object is an 
' SWbemObject object, so SWbemObject.SpawnInstance_ 
' can be called to create it.

Set oInParams = oProcess.Methods_("Create"). _
    InParameters.SpawnInstance_
oInParams.CommandLine = "Notepad.exe"

' Create sink to receive event resulting
' from the ExecMethodAsync call.
set Sink = wscript.CreateObject( _
    "WbemScripting.SWbemSink","Sink_")

' Call SWbemServices.ExecMethodAsync
' with the WMI path Win32_Process.

bDone = false
Services.ExecMethodAsync Sink, _
     "Win32_Process", "Create", oInParams

' Call the Win32_Process.Create method asynchronously.
' Set up a wait so the results of the method
' execution can be returned to 
' the sink subroutines.

while not bDone    
    wscript.sleep 1000  
wend

' Sink subroutines
sub Sink_OnObjectReady(oOutParams, oContext)
    wscript.echo "Sink_OnObjectReady subroutine " _ 
        &VBCR & "ReturnValue = " _
        & oOutParams.ReturnValue &VBCR & _
        "ProcessId = " & oOutParams.ProcessId
end sub

sub Sink_OnCompleted(HResult, LastErrorObj, oContext)
    wscript.echo "Sink_OnCompleted subroutine, hresult = " _
        & hex(HResult)
    bdone = true
end sub

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista
지원되는 최소 서버
Windows Server 2008
헤더
Wbemdisp.h
유형 라이브러리
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

추가 정보

SWbemServices

SWbemObject.ExecMethod_

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod

공급자 메서드 호출

클래스 및 인스턴스 정보 조작