- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:API関数フック Unicode版とANSI版?)
API関数フック Unicode版とANSI版
このQ&Aのポイント
- API関数フックを行う際、Unicode版とANSI版の区別がある理由について質問します。
- アプリでStartDoc関数を使用する際、StartDocAとStartDocWを区別する必要がある理由を知りたいです。
- API関数フックをする際に、Unicode版とANSI版に対応するためにはStartDocAとStartDocWの両方をフックする必要があるのか疑問に思っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> アプリでStartDoc関数を使用する時はStartDocA、StartDocWを区別せず全てStartDocだけで呼出しており正常に機能しております Unicode版とANSI版があるAPIの場合,ヘッダファイルで #if defined(UNICODE) #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif のようにマクロが定義されています。 なので,実際に呼ばれているのはStartDocAまたはStartDocWになります。 > なぜStartDoc関数をフックする時のみStartDocA、StartDocWの両者を区別する必要があるのですか? 通常のAPIの呼び出しでは区別しないで良いようにヘッダファイルが用意されているからです。 フックだけではなく,GetProcAddressでも区別しないといけませんし, VB6までやVBAでも区別されています。 # .NET FrameworkのDllImportAttributeはAを付けたりWを付けたりする機能がある。
お礼
ありがとうございます とても良く理解することが出来ました 今後とも宜しくお願い申し上げます