0

32ビットのISAPIdllを64ビットに移行する作業を行っています。VisualStudio2008を使用しています。HttpExtensionProc関数のEXTENSION_CONTROL_BLOCKポインターに問題があります。EXTENSION_CONTROL_BLOCK構造内のcharポインターは、関数への入力時に無効です。ウォッチウィンドウ内にラベルが付けられています。ポインタの最初の4バイトと最後の4バイトを入れ替えてcharポインタを手動で変更すると、正しい値が表示されます。なぜこれが起こるのか、何か考えはありますか?

これは、ポインタを変更する前の監視ウィンドウです。lpszQueryStringに注意してください: リンクテキスト 代替テキスト

これは、ポインタを変更した後の監視ウィンドウです。lpszQueryStringに注意してください: リンクテキスト 代替テキスト

4

1 に答える 1

1

問題は、1バイトのアライメントでビルドしていたことでした。私はこれを行う必要がありました:

#pragma pack(push, 8)
#include <httpext.h>
#pragma pack(pop)

答えてくれたnobugzに感謝します。

于 2009-05-11T16:23:10.090 に答える