WinHttpQueryOption 関数 (winhttp.h)

WinHttpQueryOption 関数は、指定したハンドルのインターネット オプションに対してクエリを実行します。

構文

WINHTTPAPI BOOL WinHttpQueryOption(
  [in]      HINTERNET hInternet,
  [in]      DWORD     dwOption,
  [out]     LPVOID    lpBuffer,
  [in, out] LPDWORD   lpdwBufferLength
);

パラメーター

[in] hInternet

情報のクエリを実行する HINTERNET ハンドル。 これは、クエリ対象のオプションに応じて、セッション ハンドルまたは要求ハンドルのいずれかであることに注意してください。特定のオプションのクエリに使用するのに適したハンドルを決定するには、「 オプション フラグ 」トピックを参照してください。

[in] dwOption

クエリを実行するインターネット オプションを含む符号なし long 整数値。 これは、 オプション フラグ の値のいずれかです。

[out] lpBuffer

オプション設定を受け取るバッファーへのポインター。 WinHttpQueryOption 関数によって返される文字列はグローバルに割り当てられるため、呼び出し元のアプリケーションは、文字列の使用が完了したときにグローバルに解放する必要があります。 このパラメーターを NULL に設定すると、この関数は FALSE を返します。 GetLastError を呼び出すと、ERROR_INSUFFICIENT_BUFFERが返され、lpdwBufferLength には、要求された情報を保持するために必要なバイト数が含まれます。

[in, out] lpdwBufferLength

lpBuffer の長さをバイト単位で格納する符号なし長整数変数へのポインター。 関数が戻ると、変数は lpBuffer に配置されたデータの長さを受け取ります。 GetLastError がERROR_INSUFFICIENT_BUFFERを返す場合、このパラメーターは要求された情報を保持するために必要なバイト数を受け取ります。

戻り値

成功した場合は TRUE 、それ以外の場合 は FALSE を 返します。 特定のエラー メッセージを取得するには、 GetLastError を呼び出します。 返されるエラー コードは次のとおりです。

エラー コード 説明
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
指定されたハンドルが正しい状態でないため、要求された操作を実行できません。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
指定されたハンドルの種類が、この操作に対して正しくありません。
ERROR_WINHTTP_INTERNAL_ERROR
内部エラーが発生しました。
ERROR_WINHTTP_INVALID_OPTION
無効なオプション値が指定されました。
ERROR_NOT_ENOUGH_MEMORY
要求された操作を完了するのに十分なメモリが使用できませんでした。 (Windows エラー コード)

解説

WinHTTP が非同期モードで使用されている場合 (つまり、WinHttpOpenWINHTTP_FLAG_ASYNCが設定されている場合) でも、この関数は同期的に動作します。 戻り値は成功または失敗を示します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

指定したハンドル型に無効なオプション フラグが dwOption パラメーターに渡された場合、GetLastError はERROR_INVALID_PARAMETERを返します。

メモ Windows XP と Windows 2000 については、WinHttp スタート ページの 「ランタイム要件 」セクションを参照してください。
 

この例では、接続タイムアウト値の取得を示します。

    DWORD data;
    DWORD dwSize = sizeof(DWORD);

    // 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 WinHttpQueryOption to retrieve internet options.
        if (WinHttpQueryOption( hSession, 
                                WINHTTP_OPTION_CONNECT_TIMEOUT, 
                                &data, &dwSize))
        {
            printf("Connection timeout: %u ms\n\n",data);
        }
        else
        {
            printf( "Error %u in WinHttpQueryOption.\n", GetLastError());
        }        
        
        // 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 以降がインストールされています。

関連項目

Microsoft Windows HTTP Services (WinHTTP) について

オプション フラグ

WinHTTP バージョン

WinHttpCloseHandle

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest