(从Windows 7下的虚拟PC)上运行,我在Windows XP开发应用程序时,我已经得到意外的错误WinHttpCreateUrl。我正在使用Windows 7 64位专业版中的Visual Studio 2010进行编译。呼叫与ICU_REJECT_USERPWD标志设置在Windows 7中工作,但不能在Windows XP(使用Virtual PC)
我跟踪了这个问题,发现在XP下没有正确创建URL。下面是一个小的测试床上,我放在一起,显示此 -
URL_COMPONENTS components;
memset(&components, 0, sizeof(URL_COMPONENTS));
components.dwStructSize = sizeof(URL_COMPONENTS);
components.lpszScheme = L"http";
components.dwSchemeLength = 4;
components.lpszHostName = L"google.com";
components.dwHostNameLength = 10;
components.nScheme = INTERNET_SCHEME_HTTP;
components.nPort = 80;
DWORD len = 0;
DWORD flags = ICU_REJECT_USERPWD;
if(!WinHttpCreateUrl(&components, flags, NULL, &len)) {
WChar buf[256];
wsprintf(buf, L"Error code %08X", GetLastError());
MessageBox(NULL, buf, L"FAILURE", NULL);
}
我希望它LEN设置为正确的尺寸,并获得0x7A的错误代码来表示ERROR_INSUFFICIENT_BUFFER。这是在Windows 7时会发生什么什么,我其实在Windows XP下获得是的0x57错误代码来表示ERROR_INVALID_PARAMETER。
如果我将标志的值设置为零那么它在两个操作系统上都能正常工作。我试图解决的是为什么ICU_REJECT_USERPWD导致它在XP下失败。
我意识到我不需要在这个例子中可以设置标志,但是这仅仅是一些测试代码,我放在一起显示的问题。
非常感谢这个问题的任何帮助(或任何人谁指出我做错了什么......)
我也尝试了MSDN示例代码。在Windows 7上使用ICU_REJECT_PASSWORD标志正常工作,但在XP下失败。我必须同意它在XP下不起作用。 – Rok