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 |