HRESULTの戻り値が常に成功になる
RESULT result: |
このようなコードがあったときに、返り値が常に真になることが。。。。。
逆アセンブルしてみると
call Function |
ちなみに
#define S_FALSE ((HRESULT)0x00000001L)
#define SUCCEEDED(Status) ((HRESULT)(Status>=0))
#define FAILED(Status) ((HRESULT)(Status<0))
となっています。
HRESULTの返り値が負の時だけジャンプするのだから、当然といえば当然ですね。
これは、S_FALSE の定義を -1 とするのが正しそうです。
S_FALSEは成功ステータスの一種なので、値は1で合ってます。失敗を表すにはE_FAILという値が別途用意されています。これは(0x80004005)ですから、HRESULT(実態は符号付き32bit整数)にキャストするとちゃんと<0になります。
S_FALSEは成功ステータスの一種なので、値は1で合ってます。失敗を表すにはE_FAILという値が別途用意されています。これは(0x80004005)ですから、HRESULT(実態は符号付き32bit整数)にキャストするとちゃんと<0になります。
S_FALSEは成功ステータスの一種なので、値は1で合ってます。失敗を表すにはE_FAILという値が別途用意されています。これは(0x80004005)ですから、HRESULT(実態は符号付き32bit整数)にキャストするとちゃんと<0になります。