WinHttpReadData

WinHttpOpenRequest で開いたハンドルからデータを読み取る。

WinHttpReadData hRequest, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead

hRequest : [intptr] WinHttpOpenRequest が返した有効な HINTERNET ハンドル。WinHttpReceiveResponse または WinHttpQueryDataAvailable を完了させておく必要がある。
lpBuffer : [intptr] 読み取ったデータを受け取るバッファへのポインタ。WinHttpReadData 完了まで有効である必要がある。
dwNumberOfBytesToRead : [int] 読み取るバイト数。
lpdwNumberOfBytesRead : [var] 読み取ったバイト数を受け取る ULONG 変数へのポインタ。本関数は作業前にこの値を 0 に設定する。非同期モードでは必ず NULL にしてコールバックで取得すること。

(プラグイン / モジュール : winhttp.dll)

解説

WinHttpOpenRequest で開いたハンドルからデータを読み取る。

[戻り値]
成功時は TRUE、失敗時は FALSE。拡張エラー情報は GetLastError で取得する。返されるエラーコード一覧は以下の通り。
(以下省略)

[備考]
Windows Vista/Windows Server 2008 以降、WinHttp
はサーバー送信データのチャンク転送エンコードに対応する。Transfer-Encoding
ヘッダが応答にある場合、WinHttpReadData
はチャンク情報を取り除いてからアプリにデータを渡す。非同期モードでも同期/非同期どちらでも動作する。警告: 非同期モードでは
lpdwNumberOfBytesRead に必ず NULL
を渡し、コールバックで取得すること。読み取りバッファが非常に小さいと本関数は同期的に完了することがあり、WINHTTP_CALLBACK_STATUS_READ_COMPLETE
で再度 WinHttpReadData を呼ぶとスタックオーバーフローを招くため、内部バッファと同程度 (8 KB)
以上のバッファを使うのが望ましい。同期モードで TRUE かつ読み取りバイト数 0 の場合は応答終了を意味する。

情報

プラグイン / モジュールwinhttp.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の winhttp.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_winhttp_gen2.hs