IWbemServices::CancelAsyncCall 메서드(wbemcli.h)

IWbemServices::CancelAsyncCall 메서드는 원래 비동기 메서드에 전달된 IWbemObjectSink 포인터를 기반으로 현재 보류 중인 비동기 호출을 취소합니다. 호출 전에 또는 호출이 반환된 후에 미해결 IWbemObjectSink 포인터를 해제할 수 있습니다. CancelAsyncCall 메서드는 싱크 내에서 작동되지 않으며 메서드 공급자에서 지원되지 않습니다. 즉, 호출의 클라이언트 끝만 취소됩니다. 구현 공급자는 호출이 취소되고 완료될 때 실행된다는 알림을 받지 않습니다. Win32_Volume 클래스의DefragFormat 메서드와 같이 완료하는 데 시간이 오래 걸리는 메서드를 취소하기 전에 이를 고려해야 합니다.

구문

HRESULT CancelAsyncCall(
  [in] IWbemObjectSink *pSink
);

매개 변수

[in] pSink

클라이언트가 IWbemServices 의 비동기 메서드에 제공하는 IWbemObjectSink 구현에 대한 포인터 입니다.

반환 값

이 메서드는 메서드 호출의 상태를 나타내는 HRESULT를 반환합니다. 다음 목록에는 HRESULT 내에 포함된 값이 나열되어 있습니다.

실패 시 COM 함수 GetErrorInfo에서 사용 가능한 정보를 얻을 수 있습니다.

네트워크 문제로 인해 Windows Management에 대한 원격 연결이 끊어지는 경우에도 COM 관련 오류 코드가 반환될 수 있습니다.

참고 WMI가 CancelAsyncCall을 처리할 때까지 애플리케이션의 싱크에서 SetStatus가 호출되지 않은 경우 WMI는 WBEM_E_CALL_CANCELLEDhResult 매개 변수의 값으로 해당 싱크에서 SetStatus를 호출합니다.
 
타이밍 및 비동기 작업의 특성은 WMI가 작업을 취소할 수 있는지 여부에 영향을 줄 수 있습니다. 완료되기 전에 긴 쿼리만 성공적으로 취소될 수 있습니다. 비동기 삭제 또는 수정과 같은 더 빠른 작업은 일반적으로 WMI가 CancelAsyncCall 호출을 처리하기 전에 완료됩니다. 따라서 CancelAsyncCall 이 현재 작업을 취소하려고 시도하는 동안 IWbemObjectSink 포인터를 해제하기만 하면 됩니다.
참고 동일한 개체 싱크를 사용하여 수많은 비동기 호출을 할 수 있습니다. 이 경우 CancelAsyncCall 메서드는 이 개체 싱크를 공유하는 모든 비동기 호출을 취소합니다. 각 미해결 비동기 호출에 대해 하나의 개체 싱크 instance 만드는 것이 좋습니다.
 

설명

싱크에 대한 콜백은 클라이언트에서 요구하는 것과 동일한 인증 수준으로 반환되지 않을 수 있으므로 비동기 통신 대신 반동기 통신을 사용하는 것이 좋습니다. 자세한 내용은 메서드 호출을 참조하세요. IWbemObjectSink::Indicate 또는 IWbemObjectSink::SetStatus의 구현 내에서 CancelAsyncCall을 호출하면 WMI 상태를 방해할 수 있으며 권장되지 않습니다.

ExecMethodAsync와 같은 메서드 호출의 경우 호출의 클라이언트 끝만 취소됩니다. 구현 공급자는 호출이 취소되고 완료될 때 실행된다는 알림을 받지 않습니다.

비동기 호출을 사용하는 방법에 대한 자세한 내용은 C++를 사용하여 비동기 호출 만들기 및 비동기 이벤트 알림 받기를 참조하세요.

예제

CancelAsyncCall을 사용하는 전체 예제는 예제: WMI를 통해 이벤트 알림 수신을 참조하세요.

\\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\wmi\vc\decoupled\instance_provider 샘플에서 가져온 다음 C++ 샘플은 CancelAsyncCall의 구현을 보여 줍니다.
HRESULT CProvider_IWbemServices :: CancelAsyncCall ( 
  
 IWbemObjectSink *a_Sink
)
{
 HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
 return t_Result ;
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 wbemcli.h(Wbemidl.h 포함)
라이브러리 Wbemuuid.lib
DLL Fastprox.dll; Esscli.dll; FrameDyn.dll; FrameDynOS.dll; Ntevt.dll; Stdprov.dll; Viewprov.dll; Wbemcomn.dll; Wbemcore.dll; Wbemess.dll; Wbemsvc.dll; Wmipicmp.dll; Wmidcprv.dll; Wmipjobj.dll; Wmiprvsd.dll

추가 정보

IWbemObjectSink

IWbemServices