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

完了コールバック関数に渡されるコンテキスト データ。

戻り値

操作の結果を示す状態コード。

次のコードが返される場合があります。 説明
ERROR_IO_PENDING
操作は非同期的に続行されます。
ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR
指定した URL のプロキシが見つからない場合に WinHttpGetProxyForUrlEx によって返されます。
ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT
プロキシ自動構成 (PAC) ファイルでスクリプト コードを実行中にエラーが発生しました。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
指定されたハンドルの種類が、この操作に対して正しくありません。
ERROR_WINHTTP_INVALID_URL
URL が無効です。
ERROR_WINHTTP_OPERATION_CANCELLED
通常、操作が完了する前に要求が操作されていたハンドルが閉じられたため、操作が取り消されました。
ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT
PAC ファイルをダウンロードできませんでした。 たとえば、PAC URL によって参照されているサーバーに到達できなかったか、サーバーから 404 NOT FOUND 応答が返された可能性があります。
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
PAC ファイルの URL で、"http:" または "https:" 以外のスキームが指定されています。
ERROR_NOT_ENOUGH_MEMORY
要求された操作を完了するのに十分なメモリが使用できませんでした。 (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 メンバーで自動検出が指定されている場合、WinHttpGetProxyForUrlExautoproxy URL と autoproxy スクリプトをキャッシュします。 詳細については、「 Autoproxy Cache」を参照してください。

WinHttpGetProxyForUrlEx は、 WinHttpGetProxyForUrl では行わない完全な非同期および取り消し可能な API を提供します。 WinHttpGetProxyForUrlEx は、PAC スクリプトによって返された完全なプロキシ リストをアプリケーションに提供します。これにより、アプリケーションは "DIRECT" へのフェールオーバーをより適切に処理し、必要に応じて SOCKS を理解できます。

WinHttpGetProxyForUrlEx は 常に非同期的に実行され、成功した 場合はERROR_IO_PENDING で直ちにを返します。 コールバックは、WinHttpOpen によって提供される hSessionWinHttpSetStatusCallback を呼び出すことによって設定されます。 または、WinHttpCreateProxyResolver によって提供される hResolverWinHttpSetStatusCallback を呼び出して、呼び出しごとに特定のコールバックを設定します。

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