WinHTTP について

注意

Windows 10以降のアプリ コンテナーとシステム サービスの場合、バージョン 1709、HTTP/2 (RFC7540 を参照) は既定でオンになっています。

Microsoft Windows HTTP Services (WinHTTP) では、HTTP/2 および 1.1 インターネット プロトコルに対して、サーバーでサポートされる高度なインターフェイスが提供されます。 WinHTTP は、主に HTTP サーバーと通信するサーバー アプリケーションによってサーバー ベースのシナリオで使用されるように設計されています。

WinINet は、対話型デスクトップ アプリケーション用の HTTP クライアント プラットフォームとして設計されました。 WinINet には、ユーザー資格情報の収集などの一部の操作のユーザー インターフェイスが表示されます。 ただし、WinHTTP は、これらの操作をプログラムで処理します。 HTTP クライアント サービスを必要とするサーバー アプリケーションでは、WinINet ではなく WinHTTP を使用する必要があります。 詳細については、「 WinINet アプリケーションを WinHTTP に移植する」を参照してください。

WinHTTP は、システム サービスおよび HTTP ベースのクライアント アプリケーションでも使用するように設計されています。 ただし、FTP プロトコル機能、Cookie 永続化、キャッシュ、資格情報の自動ダイアログ処理、インターネット エクスプローラー互換性、またはダウンレベル プラットフォームのサポートを必要とするシングルユーザー アプリケーションでは、WinINet の使用を検討する必要があります。

このインターフェイスは、WinHTTP アプリケーション プログラミング インターフェイス (API) を使用するか、 IWinHttpRequest インターフェイスと IWinHttpRequestEvents インターフェイスを使用して C /C++ からアクセスできます。 WinHTTP は、WinHTTP オブジェクトを介してスクリプトと Microsoft Visual Basic からもアクセスできます。 個々の関数の詳細と説明については、特定の言語の WinHTTP 関数リファレンスを参照してください。

Windows 8以降、WinHTTP には、WinHttpWebSocketSendWinHttpWebSocketReceive などの WebSocket プロトコル l を使用して接続を有効にする API が用意されています。

注意事項

WinHTTP は、非同期完了コールバック中を除いて再入可能ではありません。 つまり、スレッドは WinHttpSendRequest、WinHttpReceiveResponse、WinHttpQueryDataAvailable、WinHttpSendData、WinHttpWriteData などの WinHTTP 関数のいずれかに対して保留中の呼び出しを持ちますが、最初の呼び出しが完了するまで WinHTTP を 2 回目に呼び出す必要はありません。 2 回目の呼び出しが発生する可能性があるシナリオの 1 つは、アプリケーションが WinHTTP を呼び出すスレッドに非同期プロシージャ コール (APC) をキューに入れ、WinHTTP が内部的にアラート可能な待機を実行する場合、APC を実行できます。 APC ルーチンも WinHTTP を呼び出す場合は、WinHTTP API を再入力し、WinHTTP の内部状態が破損する可能性があります。

WinHTTP 5.1 の機能

WinHTTP のバージョン 5.1 では、次の機能が追加されました。

  • IPv6 のサポート。
  • AutoProxy 機能。
  • キープアライブ (永続的) 接続とセッション Cookie のサポートを含む HTTP/1.0 プロトコル。
  • HTTP 応答に対する HTTP/1.1 チャンク転送のサポート。
  • セッション間での匿名接続のキープアライブ プール。
  • クライアント証明書を含む Secure Sockets Layer (SSL) 機能。 サポートされている SSL プロトコルには、SSL 2.0、SSL 3.0、トランスポート層セキュリティ (TLS) 1.0 が含まれます。
  • Microsoft Passport 1.4 と Negotiate/ Kerberos パッケージの統合サポートを含む、サーバーとプロキシの認証のサポート。
  • 抑制されない限り、リダイレクトの自動処理。
  • API に加えてスクリプト可能なインターフェイス。
  • 問題のトラブルシューティングに役立つトレース ユーティリティ。

WinHTTP では、URL キャッシュと永続 Cookie、autoproxy、自動ダイアログ、オフライン サポート、ファイル転送プロトコル (FTP) など、 WinINet 機能の数はサポートされていません。

バージョン 5.1 で導入された変更の詳細については、「 WinHTTP 5.1 の新機能」を参照してください。

WinHTTP を使用したはじめに

WinHTTP の詳細については、次のトピックを参照してください。