Мне дали dll расширения 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)