ctypesモジュールは関数のrestype
にctypes.HRESULT
を指定すると戻り値がエラーの場合に自動でraise
するようです。エラーの発生時は手動で握りつぶそうとしていたのですが、可読性のためにctypes.c_int
をctypes.HRESULT
に変えたらOSError
が発生するようになりました。便利ですが気づきにくい仕様です。
追記(2024/8/10):公式ドキュメントではctypes.OleDLL
の説明にそれらしい記載があります。記載中のHRESULT
の扱いはctypes.OleDLL
以外でも適用されるようです。