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 |