次の方法で共有


HttpReceiveRequestEntityBody 関数 (http.h)

HttpReceiveRequestEntityBody 関数は、指定された HTTP 要求の追加のエンティティ本文データを受け取ります。

構文

HTTPAPI_LINKAGE ULONG HttpReceiveRequestEntityBody(
  [in]            HANDLE          RequestQueueHandle,
  [in]            HTTP_REQUEST_ID RequestId,
  [in]            ULONG           Flags,
  [out]           PVOID           EntityBuffer,
  [in]            ULONG           EntityBufferLength,
  [out, optional] PULONG          BytesReturned,
  [in, optional]  LPOVERLAPPED    Overlapped
);

パラメーター

[in] RequestQueueHandle

指定したエンティティ本文データの取得元となる要求キューへのハンドル。 要求キューが作成され、そのハンドルが HttpCreateRequestQueue 関数の呼び出しによって返されます。

Windows Server 2003 SP1 および Windows XP SP2: 要求キューへのハンドルは、 HttpCreateHttpHandle 関数によって作成されます。

[in] RequestId

取得したエンティティ本文を含む HTTP 要求の識別子。 この値は、HttpReceiveHttpRequest 関数の呼び出しによって、HTTP_REQUEST構造体の RequestId メンバーで返されます。 この値を HTTP_NULL_IDすることはできません。

[in] Flags

このパラメーターには、次のフラグ値を指定できます。

Windows Server 2003 SP1 および Windows XP SP2: このパラメーターは予約済みであり、0 である必要があります。

意味
HTTP_RECEIVE_REQUEST_ENTITY_BODY_FLAG_FILL_BUFFER
コピーするエンティティ本体が残っていない限り、バッファーに 1 つ以上のエンティティ本体が格納されるように指定します。

[out] EntityBuffer

エンティティ本文データを受け取るバッファーへのポインター。

[in] EntityBufferLength

pBuffer パラメーターが指すバッファーのサイズ (バイト単位)。

[out, optional] BytesReturned

省略可能。 pBuffer バッファーで返されるエンティティ本体データのサイズをバイト単位で受け取る変数へのポインター。

pOverlapped を使用して非同期呼び出しを行う場合は、pBytesReceived を NULL に設定します。 それ以外の場合、 pOverlappedNULL に設定されている場合、 pBytesReceived には有効なメモリ アドレスを含める必要があり、 NULL に設定することはできません。

[in, optional] Overlapped

非同期呼び出しの場合は、 pOverlappedOVERLAPPED 構造体を指すように設定します。同期呼び出しの場合は、NULL に設定 します

同期呼び出しは、エンティティ本文データが取得されるまでブロックしますが、非同期呼び出しは直ちに ERROR_IO_PENDING を返し、呼び出し元アプリケーションは GetOverlappedResult または I/O 完了ポートを使用して操作がいつ完了するかを判断します。 同期に OVERLAPPED 構造体を使用する方法の詳細については、「 同期」および「重複した入出力」を参照してください。

戻り値

関数が成功した場合、戻り値は NO_ERROR

関数が非同期的に使用される場合、戻り値 ERROR_IO_PENDING は、次の要求がまだ準備ができていないことを示し、通常の重複した I/O 完了メカニズムを使用して後で取得されます。

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

意味
ERROR_INVALID_PARAMETER
指定されたパラメーターの 1 つ以上が使用できない形式です。
ERROR_HANDLE_EOF
指定されたエンティティ本体は既に完全に取得されています。この場合、 pBytesReceived が指す値は意味を持たず、 pBuffer を調べてはいけません。
ERROR_DLL_INIT_FAILED
呼び出し元のアプリケーションは、この関数を呼び出す前に HttpInitialize を呼び出しませんでした。
その他
WinError.h で定義されている システム エラー コード

注釈

エンティティ本体全体を取得するために、アプリケーションは HttpReceiveRequestEntityBody を呼び出し、関数が ERROR_HANDLE_EOFを返すまで、新しいバッファーを渡す必要があります。 エンティティ本文データがいっぱいのバッファーが正常にコピーされ、取得を待機しているエンティティ本文データが増える限り、関数は NO_ERRORを返します。

要件

要件
サポートされている最小のクライアント Windows Vista、WINDOWS XP と SP2 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー http.h
Library Httpapi.lib
[DLL] Httpapi.dll

こちらもご覧ください

HTTP Server API バージョン 1.0 関数

HTTP サーバー サンプル アプリケーション

HTTP_REQUEST

HttpReceiveHttpRequest

HttpSendHttpResponse

HttpSendResponseEntityBody