성공 또는 실패를 나타내기 위해 COM 메서드 및 함수는 HRESULT 형식의 값을반환합니다. HRESULT 32비트 정수입니다. HRESULT의 상위 비트는 성공 또는 실패를 신호합니다. 0은 성공을 나타내고 1은 실패를 나타냅니다.
이렇게 하면 다음과 같은 숫자 범위가 생성됩니다.
- 성공 코드: 0x0–0x7FFFFFFF.
- 오류 코드: 0x80000000–0xFFFFFFFF.
소수의 COM 메서드는 HRESULT 값을 반환하지 않습니다. 예를 들어 AddRef 및 Release 메서드는 서명되지 않은 긴 값을 반환합니다. 그러나 오류 코드를 반환하는 모든 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 의오류 처리 참조)
다음