HRESULT は Windowsのエラー
winerror.hに定義されている。
たとえば、
#define NOERROR 0
#define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001L)
先頭ビットがたっているとエラー系
下位2バイトが意味あり
■マクロ
#define FAILED(Status) ((HRESULT)(Status)<0) ... 失敗したかのチェック
#define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR) ... 先頭ビットチェック