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 永続化、キャッシュ、資格情報の自動ダイアログ処理、Internet Explorer の互換性、またはダウンレベル プラットフォームのサポートを必要とするシングル ユーザー アプリケーションでは、 WinINet の使用を検討する必要があります。

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

Windows 8以降、WinHTTP には、WinHttpWebSocketSend や WinHttpWebSocketReceive などの WebSocket Protocoll を使用して接続を有効にする 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 の詳細については、次のトピックを参照してください。