다음을 통해 공유


COM의 오류 코드

성공 또는 실패를 나타내기 위해 COM 메서드 및 함수는 HRESULT 형식의 값을 반환합니다. HRESULT는 32비트 정수입니다. HRESULT의 상위 비트는 성공 또는 실패를 나타냅니다. 0은 성공을 나타내고 1은 실패를 나타냅니다.

이렇게 하면 다음과 같은 숫자 범위가 생성됩니다.

  • 성공 코드: 0x0~0x7FFFFFFF.
  • 오류 코드: 0x80000000~0xFFFFFFFF.

소수의 COM 메서드는 HRESULT 값을 반환하지 않습니다. 예를 들어 AddRefRelease 메서드는 부호 없는 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에서 오류 처리

다음

COM에서 개체 만들기