WinHttpSetTimeouts 関数 (winhttp.h)
WinHttpSetTimeouts 関数は、HTTP トランザクションに関連するタイムアウトを設定します。
構文
WINHTTPAPI BOOL WinHttpSetTimeouts(
[in] HINTERNET hInternet,
[in] int nResolveTimeout,
[in] int nConnectTimeout,
[in] int nSendTimeout,
[in] int nReceiveTimeout
);
パラメーター
[in] hInternet
WinHttpOpen または WinHttpOpenRequest によって返される HINTERNET ハンドル。
[in] nResolveTimeout
名前解決に使用するタイムアウト値をミリ秒単位で指定する整数型の値。 解決にこのタイムアウト値より長い時間がかかる場合、要求は取り消されます。 初期値は 0 で、タイムアウト (無限) がないことを意味します。
Windows Vista および Windows XP: NAME_RESOLUTION_TIMEOUTを使用して DNS タイムアウトが指定されている場合は、要求ごとに 1 つのスレッドのオーバーヘッドがあります。
[in] nConnectTimeout
サーバー接続要求に使用するタイムアウト値をミリ秒単位で指定する整数型の値。 接続要求にこのタイムアウト値より長い時間がかかる場合、要求は取り消されます。 初期値は 60,000 (60 秒) です。
TCP/IP は、このパラメーターの値に関係なく、3 つの脚の SYN/ACK 交換中にソケットの設定中にタイムアウトになる可能性があります。
[in] nSendTimeout
要求の送信に使用するタイムアウト値をミリ秒単位で指定する整数型の値。 要求の送信にこのタイムアウト値より長い時間がかかる場合、送信は取り消されます。 初期値は 30,000 (30 秒) です。
[in] nReceiveTimeout
要求に対する応答を受信するタイムアウト値をミリ秒単位で指定する整数型の値。 応答にこのタイムアウト値より長い時間がかかる場合、要求は取り消されます。 初期値は 30,000 (30 秒) です。
戻り値
成功した場合は TRUE 、それ以外の場合 は FALSE を 返します。 拡張エラー情報については、 GetLastError を呼び出します。 返されるエラー コードは次のとおりです。
エラー コード | 説明 |
---|---|
|
指定されたハンドルが正しい状態でないため、要求された操作を実行できません。 |
|
指定されたハンドルの種類が、この操作に対して正しくありません。 |
|
内部エラーが発生しました。 |
|
要求された操作を完了するのに十分なメモリが使用できませんでした。 (Windows エラー コード) |
|
1 つ以上のタイムアウト パラメーターに-1 以外の負の値があります。 |
注釈
WinHTTP が非同期モードで使用されている場合 (つまり、WinHttpOpen でWINHTTP_FLAG_ASYNCが設定されている場合) でも、この関数は同期的に動作します。 戻り値は成功または失敗を示します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
値が 0 または -1 の場合、タイムアウトが無限に待機するように設定されます。 0 より大きい値は、タイムアウト値をミリ秒単位で設定します。 たとえば、30,000 の場合、タイムアウトは 30 秒に設定されます。 -1 以外のすべての負の値を指定すると、関数は ERROR_INVALID_PARAMETERで失敗します。
例
この例では、 WinHttpSetTimeouts を使用して新しいタイムアウト値を設定する方法を示します。
// Use WinHttpOpen to obtain an HINTERNET handle.
HINTERNET hSession = WinHttpOpen(L"A WinHTTP Example Program/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
if (hSession)
{
// Use WinHttpSetTimeouts to set a new time-out values.
if (!WinHttpSetTimeouts( hSession, 10000, 10000, 10000, 10000))
printf( "Error %u in WinHttpSetTimeouts.\n", GetLastError());
// PLACE ADDITIONAL CODE HERE.
// When finished, release the HINTERNET handle.
WinHttpCloseHandle(hSession);
}
else
{
printf("Error %u in WinHttpOpen.\n", GetLastError());
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP、Windows 2000 Professional SP3 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003、Windows 2000 Server SP3 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winhttp.h |
Library | Winhttp.lib |
[DLL] | Winhttp.dll |
再頒布可能パッケージ | Windows XP および Windows 2000 では、WinHTTP 5.0 およびインターネット エクスプローラー 5.01 以降がインストールされています。 |