COM의 오류 코드
성공 또는 실패를 나타내기 위해 COM 메서드 및 함수는 HRESULT 형식의 값을 반환합니다. HRESULT는 32비트 정수입니다. HRESULT의 상위 비트는 성공 또는 실패를 나타냅니다. 0은 성공을 나타내고 1은 실패를 나타냅니다.
이렇게 하면 다음과 같은 숫자 범위가 생성됩니다.
- 성공 코드: 0x0~0x7FFFFFFF.
- 오류 코드: 0x80000000~0xFFFFFFFF.
소수의 COM 메서드는 HRESULT 값을 반환하지 않습니다. 예를 들어 AddRef 및 Release 메서드는 부호 없는 long 값을 반환합니다. 그러나 오류 코드를 반환하는 모든 COM 메서드는 HRESULT 값을 반환합니다.
COM 메서드의 성공 여부를 확인하려면 반환된 HRESULT의 상위 비트를 검사합니다. Windows SDK 헤더는 더 쉽게 확인할 수 있도록 SUCCEEDED 매크로와 FAILED 매크로라는 두 개의 매크로를 제공합니다. SUCCEEDED 매크로는 HRESULT가 성공 코드이면 TRUE를 반환하고 오류 코드이면 FALSE를 반환합니다. 다음 예제에서는 CoInitializeEx의 성공 여부를 확인합니다.
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
// The function succeeded.
}
else
{
// Handle the error.
}
경우에 따라 역 조건을 테스트하는 것이 더 편리합니다. FAILED 매크로는 SUCCEEDED와 반대입니다. 오류 코드인 경우 TRUE를 반환하고 성공 코드인 경우 FALSE를 반환합니다.
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (FAILED(hr))
{
// Handle the error.
}
else
{
// The function succeeded.
}
이 모듈의 뒷부분에서는 COM 오류를 처리하도록 코드를 구성하는 방법에 대한 몇 가지 실용적인 조언을 살펴보겠습니다. COM에서 오류 처리
다음