HttpSendResponseEntityBody 関数 (http.h)
HttpSendResponseEntityBody 関数は、HTTP 応答に関連付けられたエンティティ本文データを送信します。
構文
HTTPAPI_LINKAGE ULONG HttpSendResponseEntityBody(
[in] HANDLE RequestQueueHandle,
[in] HTTP_REQUEST_ID RequestId,
[in] ULONG Flags,
[in] USHORT EntityChunkCount,
[in] PHTTP_DATA_CHUNK EntityChunks,
[out] PULONG BytesSent,
[in] PVOID Reserved1,
[in] ULONG Reserved2,
[in] LPOVERLAPPED Overlapped,
[in, optional] PHTTP_LOG_DATA LogData
);
パラメーター
[in] RequestQueueHandle
指定した要求の取得元の要求キューへのハンドル。 要求キューが作成され、そのハンドルが HttpCreateRequestQueue 関数の呼び出しによって返されます。
Windows Server 2003 SP1 および Windows XP SP2: 要求キューへのハンドルは、 HttpCreateHttpHandle 関数によって作成されます。
[in] RequestId
この応答が対応する HTTP 要求の識別子。 この値は、HttpReceiveHttpRequest 関数の呼び出しによって、HTTP_REQUEST構造体の RequestId メンバーで返されます。 HTTP_NULL_IDすることはできません。
[in] Flags
次の相互排他的フラグ値のいずれかを含めることができるパラメーター。
Flags | 意味 |
---|---|
|
この応答を送信した後、ネットワーク接続を切断し、使用中の HTTP のバージョンに関連付けられている永続的な接続機能をオーバーライドする必要があります。 アプリケーションでは、コンテンツ長もチャンク エンコードも使用されていない場合に、このフラグを使用してエンティティの末尾を示す必要があります。 |
|
この応答の追加のエンティティ本文データは、 HttpSendResponseEntityBody への 1 つ以上の後続の呼び出しを通じてアプリケーションによって送信されます。 最後の呼び出しでは、このフラグを 0 に設定します。 |
|
このフラグを使用すると、応答ごとにカーネル内のデータをバッファリングできます。
同期 I/O を実行しているアプリケーション、または非同期 I/O を実行しているアプリケーションで、一度に未処理の送信を 1 つ以下で使用する必要があります。 非同期 I/O を使用するアプリケーションでは、一度に複数の送信が未処理である可能性があります。このフラグは使用しないでください。 このフラグを設定するときは、 HttpSendHttpResponse 関数の呼び出しでも一貫して使用する必要があります。 Windows Server 2003: このフラグはサポートされていません。 このフラグは、WINDOWS Server 2003 SP1 の新しいフラグです。 |
|
この送信に対してのみ TCP ナグリング アルゴリズムを有効にします。
Windows Vista 以降: このフラグはサポートされていません。 |
|
範囲要求に対して、完全な応答コンテンツが渡され、呼び出し元が HTTP API で範囲を適切に処理することを要求することを指定します。
メモ このフラグは、HTTP GET 要求への応答でのみサポートされ、機能の限られたサブセットを提供します。 完全な範囲の処理を必要とするアプリケーションは、ユーザー モードで実行し、HTTP.sys に依存しないようにする必要があります。 使用は推奨されません。
メモ このフラグはサポートされています。 |
|
要求/応答が HTTP に準拠していないため、後続のすべてのバイトをエンティティ本文として扱う必要があることを指定します。 アプリケーションは、Web ソケットのアップグレード要求を受け入れ、接続データを不透明なデータとして扱うように HTTP.sys に通知するときに、このフラグを指定します。
このフラグは、pHttpResponse の StatusCode メンバーが 101 でプロトコルを切り替える場合にのみ許可されます。 HttpSendResponseEntityBody は 、このフラグが使用されている場合、他のすべての HTTP 応答型の ERROR_INVALID_PARAMETER を返します。 Windows 8 以降: このフラグはサポートされています。 |
[in] EntityChunkCount
pEntityChunks が指す配列内の構造体の数。 この数は 9999 を超えることはできません。
[in] EntityChunks
エンティティ本文データとして送信 されるHTTP_DATA_CHUNK 構造体の配列へのポインター。
[out] BytesSent
省略可能。 関数が同期的に動作する場合に送信される数値をバイト単位で受け取る変数へのポインター。
pOverlapped を使用して非同期呼び出しを行う場合は、pBytesSent を NULL に設定します。 それ以外の場合、 pOverlapped が NULL に設定されている場合、 pBytesSent には有効なメモリ アドレスを含める必要があり、 NULL に設定することはできません。
[in] Reserved1
このパラメーターは予約済みであり、 NULL である必要があります。
[in] Reserved2
このパラメーターは予約されており、0 である必要があります。
[in] Overlapped
非同期呼び出しの場合は、 pOverlapped を OVERLAPPED 構造体を指すように設定します。同期呼び出しの場合は、NULL に設定 します。
同期呼び出しは 、pEntityChunks パラメーターで指定されたすべての応答データが送信されるまでブロックしますが、非同期呼び出しは直ちに ERROR_IO_PENDING を返し、呼び出し元のアプリケーションは GetOverlappedResult または I/O 完了ポートを使用して操作がいつ完了するかを判断します。 同期に OVERLAPPED 構造体を使用する方法の詳細については、「 同期」および「重複した入出力」を参照してください。
[in, optional] LogData
応答のログ記録に使用 されるHTTP_LOG_DATA 構造体へのポインター。 HTTP_LOG_FIELDS_DATA構造体へのポインターを渡し、それをPHTTP_LOG_DATAにキャストします。
URL グループまたはサーバー セッションでログ記録が有効になっている場合でも、アプリケーションがログ フィールドのデータ構造を提供しない限り、応答はログに記録されないことに注意してください。
Windows Server 2003 および Windows XP SP2: このパラメーターは予約済みであり、 NULL である必要があります。
Windows Vista と Windows Server 2008: このパラメーターは、Windows Vista および Windows Server 2008 の新機能です
戻り値
関数が成功した場合、戻り値は NO_ERROR。
関数が非同期的に使用される場合、戻り値 ERROR_IO_PENDING は、次の要求がまだ準備ができていないことを示し、通常の重複した I/O 完了メカニズムを使用して後で取得されます。
関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
値 | 意味 |
---|---|
|
指定されたパラメーターの 1 つ以上が使用できない形式です。 |
|
同じ RequestId を持つ HttpSendHttpResponse または HttpSendResponseEntityBody に対して保留中の呼び出しがあります。 |
|
WinError.h で定義されている システム エラー コード 。 |
注釈
Content-length ヘッダーも Transfer-encoding ヘッダーも応答ヘッダーに含まれていない場合、アプリケーションは 、HTTP_SEND_RESPONSE_DISCONNECT フラグを使用して接続を明示的に閉じることで、応答の終了を示す必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista、WINDOWS XP と SP2 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | http.h |
Library | Httpapi.lib |
[DLL] | Httpapi.dll |