(HRESULT)(Status) >= 0是什么意思
#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)
#define FAILED(Status) ((HRESULT)(Status)<0)
#define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR)
// Success codes
#define S_OK ((HRESULT)0x00000000L)
#define S_FALSE ((HRESULT)0x00000001L)
S_开头的都属于成功,E_开头的都属于失败
S_OK,S_FALSE,它们都表示函数执行成功了,只是返回值不同而已.
假如碰到一些不正常的状态(比如输入类型不对,函数没有实现,媒体读写失败等)就会返回E_FAIL(不仅限于E_开头,有些是xxxx_E_开头)之类的最高bit为1的结果,这个才是失败.SUCCEEDED就是用于检测这类失败的