(HRESULT)(Status) >= 0是什么意思

HRESUTL应该是某种整型类型,这句代码的意思是:
将变量Status的值强制转换为HRESUTL类型后,看是否不小于0
/*    -SUCCEEDED--FAILED--都属于宏,不是函数-------    */
SUCCEEDED and S_OK

#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就是用于检测这类失败的

posted @ 2011-12-26 10:00  stma  阅读(789)  评论(0)    收藏  举报