다음을 통해 공유


SetErrorInfo 함수(oleauto.h)

실행의 현재 논리 스레드에 대한 오류 정보 개체를 설정합니다.

구문

HRESULT SetErrorInfo(
  [in]           ULONG      dwReserved,
  [in, optional] IErrorInfo *perrinfo
);

매개 변수

[in] dwReserved

다음에 사용하도록 예약됩니다. 0이어야 합니다.

[in, optional] perrinfo

오류 개체입니다.

반환 값

이 함수가 성공하면 S_OK 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

이 함수는 기존 오류 정보 개체(있는 경우)를 해제하고 포인터를 perrinfo로 설정합니다. 개체를 실행의 현재 논리 스레드와 연결하는 오류 개체를 만든 후 이 함수를 사용합니다.

SetErrorInfo를 호출하는 속성 또는 메서드가 DispInvoke에서 호출되는 경우 DispInvoke는 EXCEPINFO 매개 변수를 오류 정보 개체에 지정된 값으로 채웁니다. DispInvoke는 속성 또는 메서드가 DispInvoke에 대한 실패 반환 값을 반환할 때 DISP_E_EXCEPTION 반환합니다.

IDispatch::Invoke를 사용하지 않는 VTBL(가상 함수 테이블) 바인딩 컨트롤러는 GetErrorInfo를 사용하여 오류 정보 개체를 가져올 수 있습니다. 이렇게 하면 클라이언트에서 VTBL 바인딩 또는 IDispatch를 사용하는지 여부에 관계없이 이중 인터페이스를 지원하는 개체가 SetErrorInfo를 사용할 수 있습니다.

아파트 간 호출이 수행되면 COM은 오류 개체를 지웁니다.

프록시 스텁을 통과하는 COM 호출을 실행하면 호출 스레드에 대한 기존 오류 개체가 지워집니다. 호출된 개체는 SetErrorInfo 를 호출한 후 반환하기 전에 이러한 호출을 수행해서는 안 됩니다. 호출자는 호출이 반환된 후 GetErrorInfo를 호출하기 전에 이러한 호출을 수행해서는 안 됩니다. 일반적으로 인터페이스 메서드는 SetErrorInfo를 호출한 후 가능한 한 빨리 를 반환해야 하며 호출자는 호출이 반환된 후 최대한 빨리 GetErrorInfo 를 호출해야 합니다.

COM 모달 메시지 루프를 입력하면 기존 오류 개체가 지워지게 됩니다. SetErrorInfo를 호출한 후 호출된 개체가 메시지 루프를 입력하면 안 됩니다.

예제

ICreateErrorInfo *pcerrinfo;
IErrorInfo *perrinfo;
HRESULT hr;

hr = CreateErrorInfo(&pcerrinfo);
if (SUCCEEDED(hr))
{
   hr = pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo);
   if (SUCCEEDED(hr))
   {
      SetErrorInfo(0, perrinfo);
      perrinfo->Release();
   }
   pcerrinfo->Release();
}

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 oleauto.h
라이브러리 OleAut32.lib
DLL OleAut32.dll