Я получаю неожиданные ошибки при запуске приложения, которое я разрабатываю в Windows XP (в Virtual PC из Windows 7). Я компилирую его с помощью Visual Studio 2010 в 64-разрядной версии Windows 7 Professional.
Я отследил проблему до того, что URL-адреса не были созданы должным образом под XP. Вот небольшой испытательный стенд, который я собрал, чтобы показать это -
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 .
Если я установлю значение flags равным zero , тогда оно отлично работает в обеих операционных системах. Я пытаюсь понять, почему ICU_REJECT_USERPWD вызывает сбой в XP.
Я понимаю, что мне не нужно устанавливать этот флаг для этого примера, но это всего лишь некоторый тестовый код, который я собрал, чтобы отобразить проблему.
Большое спасибо за любую помощь в решении этой проблемы (или любому, кто указывает, что я делаю неправильно ...)