WinHttpGetProxyForUrlEx 関数 (winhttp.h)
WinHttpGetProxyForUrlEx 関数は、指定した URL のプロキシ データを取得します。
構文
WINHTTPAPI DWORD WinHttpGetProxyForUrlEx(
[in] HINTERNET hResolver,
[in] PCWSTR pcwszUrl,
[in] WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions,
[in] DWORD_PTR pContext
);
パラメーター
[in] hResolver
WinHttpCreateProxyResolver 関数によって返される WinHTTP リゾルバー ハンドル。
[in] pcwszUrl
プロキシ情報が決定される URL を含む null で終わる Unicode 文字列へのポインター。
[in] pAutoProxyOptions
使用する自動プロキシ オプションを指定する WINHTTP_AUTOPROXY_OPTIONS 構造体へのポインター。
[in] pContext
完了コールバック関数に渡されるコンテキスト データ。
戻り値
操作の結果を示す状態コード。
次のコードが返される場合があります。 | 説明 |
---|---|
|
操作は非同期的に続行されます。 |
|
指定した URL のプロキシが見つからない場合に WinHttpGetProxyForUrlEx によって返されます。 |
|
プロキシ自動構成 (PAC) ファイルでスクリプト コードを実行中にエラーが発生しました。 |
|
指定されたハンドルの種類が、この操作に対して正しくありません。 |
|
URL が無効です。 |
|
通常、操作が完了する前に要求が操作されていたハンドルが閉じられたため、操作が取り消されました。 |
|
PAC ファイルをダウンロードできませんでした。 たとえば、PAC URL によって参照されているサーバーに到達できなかったか、サーバーから 404 NOT FOUND 応答が返された可能性があります。 |
|
PAC ファイルの URL で、"http:" または "https:" 以外のスキームが指定されています。 |
|
要求された操作を完了するのに十分なメモリが使用できませんでした。 (Windows エラー コード) |
注釈
この関数は、HTTP 要求のプロキシ設定を自動的に構成するための Web プロキシ自動検出 (WPAD) プロトコルを実装します。 WPAD プロトコルは、プロキシ自動構成 (PAC) ファイルをダウンロードします。これは、特定のターゲット URL に使用するプロキシ サーバーを識別するスクリプトです。 PAC ファイルは、通常、企業ネットワーク環境内の IT 部門によって展開されます。 PAC ファイルの URL は、明示的に指定することも、 WinHttpGetProxyForUrlEx を指定して、ローカル ネットワーク上の PAC ファイルの場所を自動的に検出するように指示することもできます。
WinHttpGetProxyForUrlEx では 、ECMAScript ベースの PAC ファイルのみがサポートされます。
PAC ファイルは URL ごとに異なるプロキシ サーバーを返す可能性があるため、WinHttpGetProxyForUrlEx は URL ごとに呼び出す必要があります。 これは、PAC ファイルを使用すると、IT 部門がプロキシ サーバー配列内の特定のプロキシにターゲット URL ( lpcwszUrl パラメーターで指定) をマッピング (ハッシュ) することでプロキシ サーバーの負荷分散を実装できるため便利です。
pAutoProxyOptions 構造体の dwFlags メンバーで自動検出が指定されている場合、WinHttpGetProxyForUrlEx は autoproxy URL と autoproxy スクリプトをキャッシュします。 詳細については、「 Autoproxy Cache」を参照してください。
WinHttpGetProxyForUrlEx は、 WinHttpGetProxyForUrl では行わない完全な非同期および取り消し可能な API を提供します。 WinHttpGetProxyForUrlEx は、PAC スクリプトによって返された完全なプロキシ リストをアプリケーションに提供します。これにより、アプリケーションは "DIRECT" へのフェールオーバーをより適切に処理し、必要に応じて SOCKS を理解できます。
WinHttpGetProxyForUrlEx は 常に非同期的に実行され、成功した 場合はERROR_IO_PENDING で直ちにを返します。 コールバックは、WinHttpOpen によって提供される hSession で WinHttpSetStatusCallback を呼び出すことによって設定されます。 または、WinHttpCreateProxyResolver によって提供される hResolver で WinHttpSetStatusCallback を呼び出して、呼び出しごとに特定のコールバックを設定します。
WinHttpCreateProxyResolver の前に WinHttpSetStatusCallback を呼び出す必要があります。 WinHttpSetStatusCallback を呼び出すときは、WINHTTP_CALLBACK_FLAG_REQUEST_ERROR |WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE。 コールバック の 使用については、「WINHTTP_STATUS_CALLBACK」を参照してください。
状態WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETEのコールバックが返されると、アプリケーションは WinHttpGetProxyForUrlEx を発行するために使用されるリゾルバー ハンドルで WinHttpGetProxyResult を呼び出して、その呼び出しの結果を受け取ることができます。
ERROR_IO_PENDINGを返した後に呼び出しが失敗した場合は、WINHTTP_CALLBACK_STATUS_REQUEST_ERRORのコールバックが発行されます。
この関数は常にアウトプロセスで実行されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winhttp.h |
Library | Winhttp.lib |
[DLL] | Winhttp.dll |