WinHttpWriteData

WinHttpWriteData 関数は、HTTP サーバーにリクエストデータを書き込む。

WinHttpWriteData hRequest, lpBuffer, dwNumberOfBytesToWrite, lpdwNumberOfBytesWritten

hRequest : [intptr] WinHttpOpenRequest から返される有効な HINTERNET ハンドル。この関数を呼び出す前に WinHttpSendRequest が完了するのを待つ。
lpBuffer : [intptr] サーバーに送信するデータを含むバッファへのポインタ。WinHttpWriteData が完了するまでこのバッファが有効であり続けるようにすること。
dwNumberOfBytesToWrite : [int] ファイルに書き込むバイト数を含む unsigned long 整数値。
lpdwNumberOfBytesWritten : [var] バッファに書き込まれたバイト数を受け取る unsigned long 整数変数へのポインタ。WinHttpWriteData 関数は処理やエラーチェックを行う前にこの値を 0 に設定する。WinHTTP を非同期で使う場合は、このパラメータを NULL に設定し、情報はコールバック関数で取得しなければならない。そうしないとメモリフォールトを引き起こす可能性がある。

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

解説

WinHttpWriteData 関数は、HTTP サーバーにリクエストデータを書き込む。

[戻り値]
成功した場合は TRUE を、失敗した場合は FALSE を返す。拡張エラー情報は GetLastError
で取得する。返されるエラーコードには次のものがある:
(以下省略)

[備考]
WinHTTP が非同期モード (WinHttpOpen で WINHTTP_FLAG_ASYNC が設定されている状態)
で使われる場合でも、この関数は同期的にも非同期的にも動作しうる。この関数が FALSE を返した場合、GetLastError
で拡張エラー情報を取得できる。TRUE を返した場合、WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE
完了通知を使ってこの関数が成功したかとパラメータの値を確認する。WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
完了通知は、操作が非同期に完了したが失敗したことを示す。警告: WinHTTP を非同期で使う場合は、必ず
lpdwNumberOfBytesWritten パラメータを NULL
に設定し、書き込まれたバイト数はコールバック関数で取得すること。そうしないとメモリフォールトが発生する可能性がある。アプリケーションがデータを送信している間、WinHttpReceiveResponse
を呼び出してデータ転送を終了できる。WinHttpCloseHandle
が呼び出されるとデータ転送は中止される。WinHttpSetStatusCallback
でステータスコールバック関数がインストールされている場合、WinHttpSetStatusCallback の
dwNotificationFlags パラメータで設定された次の通知のうち該当するものがサーバーへのデータ送信の進捗を示す:
(以下省略)

情報

プラグイン / モジュール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