Windows XP(Windows 7のVirtual PC)で開発中のアプリケーションを実行すると予期しないエラーが発生しました。 Windows 7 64-bit ProfessionalでVisual Studio 2010を使用してコンパイルしています。ICH_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を設定し、ERROR_INSUFFICIENT_BUFFERを示すために、0x7Aののエラーコードを与えることを期待 - 以下は、私がこれを表示するために一緒に入れ、小さなテストベッドです。これはWindows 7で起こります。Windows XPでは実際には0x57というエラーコードが表示され、ERROR_INVALID_PARAMETERと表示されます。
フラグの値をゼロに設定すると、両方のオペレーティングシステムで正常に動作します。私が解決しようとしているのは、なぜICU_REJECT_USERPWDがXPの下で失敗する原因です。
この例ではフラグを設定する必要はありませんが、これは問題を表示するためにまとめたテストコードです。
多く、この問題を持つ任意の助けに感謝します(または私が間違ってやっていると指摘誰にも...)
MSDNのサンプルコードも試しました。 ICU_REJECT_PASSWORDフラグでWindows 7上で正常に動作しますが、XPでは惨めに失敗します。私はそれがちょうどXPでは動作しないことに同意する必要があります。 – Rok