GetRawInputBuffer

生入力データをバッファリングして読み取る。

GetRawInputBuffer pData, pcbSize, cbSizeHeader

pData : [var] 型: **PRAWINPUT** 生入力データを含む [RAWINPUT](ns-winuser-rawinput.md) 構造体群のバッファへのポインタ。バッファはポインタ境界(32 ビットアーキテクチャでは **DWORD**、64 ビットアーキテクチャでは **QWORD**)にアラインすること。**NULL** の場合、最初の生入力メッセージのデータサイズ(必要最小バッファ、バイト単位)が \**pcbSize* に返される。
pcbSize : [var] 型: **PUINT** 指定した [RAWINPUT](ns-winuser-rawinput.md) バッファのバイト単位のサイズ。
cbSizeHeader : [int] 型: **UINT** [RAWINPUTHEADER](ns-winuser-rawinputheader.md) 構造体のバイト単位のサイズ。

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

解説

生入力データをバッファリングして読み取る。

[戻り値]
型: **UINT** *pData* が **NULL** で関数が成功した場合、戻り値はゼロである。*pData* が
**NULL** でなく関数が成功した場合、戻り値は *pData* に書き込まれた
[RAWINPUT](ns-winuser-rawinput.md) 構造体の個数である。エラー発生時は (**UINT**)-1
を返す。エラーコードは
[GetLastError](/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror)
を呼んで取得する。

[備考]
アプリケーションが生入力を受け取ると、メッセージキューに
[WM_INPUT](/windows/win32/inputdev/wm-input) メッセージが届き、キューステータスフラグ
[QS_RAWINPUT](nf-winuser-getqueuestatus.md)
が設定される。**GetRawInputBuffer** により生入力データは可変サイズの
[RAWINPUT](ns-winuser-rawinput.md) 構造体配列として読み取られ、対応する
[WM_INPUT](/windows/win32/inputdev/wm-input)
メッセージが呼び出しスレッドのメッセージキューから削除される。バッファにすべてのメッセージデータが収まらない場合は複数回呼び出してすべて読み取ることができる。[NEXTRAWINPUTBLOCK](nf-winuser-nextrawinputblock.md)
マクロで [RAWINPUT](ns-winuser-rawinput.md)
配列を走査できる。すべての生入力メッセージが正常に読み取られると、呼び出しスレッドのメッセージキューステータスから
[QS_RAWINPUT](nf-winuser-getqueuestatus.md) フラグがクリアされる。 > [!NOTE] >
WOW64 では、生入力バッファの正しいサイズを取得するために \**pcbSize* の代わりに \**pcbSize* \* 8
を使う必要がある。WOW64 で **GetRawInputBuffer** を正しく動作させるには
[RAWINPUT](ns-winuser-rawinput.md) 構造体を 8 バイト境界にアラインする必要がある。次のコードは
WOW64 向けに **RAWINPUT** をアラインする例を示す。
(以下省略)

情報

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