MFC の CHttpServerContext クラスを介して「ServerSupportFunction」を呼び出す VC6 でコンパイルされた ISAPI 拡張 dll が提供されました。コードは次のようになります (Ctx がクラス CHttpServerContext のオブジェクトであると仮定します)。
CString str;
str = "Content-Type: text/plain\r\n";
str += "Content-Length: 200\r\n";
str += "\r\n";
DWORD len = str.GetLength();
Ctx->ServerSupportFunction(HSE_REQ_SEND_RESPONSE_HEADER,NULL,
&len,
(LPWORD)(LPCTSTR)str);
Windows 2003 IIS6 で実行している場合、このコードは正常に動作します。Windows 2008 IIS7 で実行している場合、ERROR_INVALID_PARAMETER の Windows エラー コードが返されます。
CString を使用する代わりに、最後のパラメーターを (LPWORD)"Content-Type: text/plain\r\n\r\n" に変更すると、関数呼び出しは成功します。dll は、静的 MFC を使用して VC6 を使用して Windows XP でコンパイルされます。
私はdllコードを変更したくないので、Windows 2008でこの問題が発生する理由と解決方法を知っている人はいますか?
これに影響する Windows 2008 の変更はありましたか? (何も見つかりませんでした)マシンのコードページに関連している可能性はありますか?dll を別の方法でコンパイルする必要がありますか?(おそらく UNICODE なしで)