Published 2020. 10. 29. 17:01

1. HRESULT는 그냥 long 혹은 signed long int 이다. (32bit)

  • Severity code(1bit) : Success or Fail
  • Facility code(11bit) : application 에러보다는 Infrastructure 에러와 연관된 부분
  • Status code(16bit) : 실질적인 에러 코드
//관련 매크로
#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
#define FAILED(hr) ((HRESULT)(hr) < 0)

//매크로 안쓴는 버전
if(S_OK == hr) ...
if(S_OK !+ hr) ...
struct ComException
{
    HRESULT error;
    ComException(const HRESULT hr) : error(hr) {}
};

inline void HR(const HRESULT hr)
{
    if(S_OK != hr)
    {
    	throw ComException(hr);
    }
}

 

 

'삽질 > COM' 카테고리의 다른 글

COM study note 8 IUnknown C# 버전  (0) 2020.10.30
COM study note 8 IUnknown 이식  (0) 2020.10.30
COM study note 6 인터페이스 상속  (0) 2020.10.28
COM study note 5 레퍼런스 카운터  (0) 2020.10.28
COM study note 4 인터페이스  (0) 2020.10.27
복사했습니다!