WinHttpReadDataEx 関数 (winhttp.h)

WinHttpOpenRequest 関数によって開かれたハンドルからデータを読み取ります。

構文

WINHTTPAPI DWORD WinHttpReadDataEx(
  HINTERNET hRequest,
  LPVOID    lpBuffer,
  DWORD     dwNumberOfBytesToRead,
  LPDWORD   lpdwNumberOfBytesRead,
  ULONGLONG ullFlags,
  DWORD     cbProperty,
  PVOID     pvProperty
);

パラメーター

hRequest

型: IN HINTERNET

WinHttpOpenRequest の以前の呼び出しから返された HINTERNET ハンドル。

WinHttpReceiveResponse または WinHttpQueryDataAvailable は、このハンドルに対して呼び出されている必要があり、 WinHttpReadDataEx が呼び出される前に完了している必要があります。 WinHttpReceiveResponse の完了後すぐに WinHttpReadDataEx を呼び出すとバッファー コピーの費用はかからなくなりますが、これを行うには、アプリケーションで読み取りに固定長バッファーを使用する必要があります。

lpBuffer

種類: _Out_writes_bytes_to_(dwNumberOfBytesToRead, *lpdwNumberOfBytesRead) __out_data_source(NETWORK) LPVOID

読み取られたデータを受け取るバッファーへのポインター。 WinHttpReadDataEx が完了するまで、このバッファーが有効なままであることを確認します。

dwNumberOfBytesToRead

型: IN DWORD

読み取るバイト数を含む符号なし long 整数値。

lpdwNumberOfBytesRead

種類: OUT LPDWORD

読み取られたバイト数を受け取る符号なし long 整数変数へのポインター。 WinHttpReadDataEx は 、作業またはエラー チェックを行う前に、この値を 0 に設定します。 WinHTTP を非同期的に使用する場合は、常にこのパラメーターを NULL に設定し、コールバック関数の情報を取得します。これを行わないと、メモリ エラーが発生する可能性があります。

ullFlags

型: IN ULONGLONG

WINHTTP_READ_DATA_EX_FLAG_FILL_BUFFER渡した場合、WinHttp は、指定されたデータ バッファーが入力されるか、応答が完了するまで、WinHttpReadDataEx の呼び出しを完了しません。 このフラグを渡すと、この API の動作は WinHttpReadData と同等になります。

cbProperty

型: IN DWORD

予約済み。 0 を渡します。

pvProperty

種類: _In_reads_bytes_opt_(cbProperty) PVOID

予約済み。 NULL を渡します。

戻り値

操作の結果を示す状態コード。 返されるエラー コードの中には、次のエラー コードがあります。

エラー コード 説明
ERROR_WINHTTP_CONNECTION_ERROR
サーバーとの接続がリセットまたは終了されたか、互換性のない SSL プロトコルが検出されました。 たとえば、WinHTTP 5.1 では、クライアントで明示的に有効にしない限り、SSL2 はサポートされません。
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
指定されたハンドルが正しい状態でないため、要求された操作を実行できません。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
指定されたハンドルの種類がこの操作に対して正しくありません。
ERROR_WINHTTP_INTERNAL_ERROR
内部エラーが発生しました。
ERROR_WINHTTP_OPERATION_CANCELLED
通常、操作が完了する前に要求が操作されていたハンドルが閉じられたため、操作は取り消されました。
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
受信応答が内部 WinHTTP サイズ制限を超えたときに返されます。
ERROR_WINHTTP_TIMEOUT
要求がタイムアウトしました。
ERROR_NOT_ENOUGH_MEMORY
要求された操作を完了するのに十分なメモリが使用できませんでした。 (Windows エラー コード)

解説

既定では、 WinHttpReadDataEx は、指定したバッファーに任意の量のデータが書き込まれた後にを返します (関数は、指定したバッファーを常に完全に埋めるわけではありません)。

要件

   
サポートされている最小のクライアント Windows 10 ビルド 20348
サポートされている最小のサーバー Windows 10 ビルド 20348
対象プラットフォーム Windows
ヘッダー winhttp.h
Library Winhttp.lib
[DLL] Winhttp.dll

関連項目