Мне дали расширение ISAPI, скомпилированное в VC6, которое вызывает «ServerSupportFunction» через класс CHttpServerContext в MFC.
Код выглядит примерно так (предположим, что 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 возвращает код ошибки Windows ERROR_INVALID_PARAMETER
если я изменяю последний параметр на (LPWORD) "Content-Type: text / plain \ r \ n \ r \ n"
вместо использования CString вызов функции завершился успешно.
DLL компилируется в Windows XP с VC6 со статическим MFC.
Поскольку я не хочу менять код DLL, кто-нибудь знает причину, по которой эта проблема возникает в Windows 2008 и как ее можно решить?
Были ли какие-либо изменения в Windows 2008, влияющие на это? (Я не нашел ни одного)
Может ли это быть связано с машинной кодовой страницей? Должна ли dll компилироваться по-разному? (Может быть без UNICODE)