GetRawInputBuffer 関数 (winuser.h)
呼び出し元スレッドのメッセージ キューにある生の入力メッセージ データのバッファー読み取りを実行します。
構文
UINT GetRawInputBuffer(
[out, optional] PRAWINPUT pData,
[in, out] PUINT pcbSize,
[in] UINT cbSizeHeader
);
パラメーター
[out, optional] pData
型: PRAWINPUT
生入力データを含む RAWINPUT 構造体のバッファーへのポインター。 バッファーはポインター境界に配置する必要があります。これは、32 ビット アーキテクチャでは DWORD 、64 ビット アーキテクチャでは QWORD です。
NULL の場合、最初の生入力メッセージ データのサイズ (最小必須バッファー) が *pcbSize で返されます (バイト単位)。
[in, out] pcbSize
型: PUINT
指定された RAWINPUT バッファーのサイズ (バイト単位)。
[in] cbSizeHeader
型: UINT
RAWINPUTHEADER 構造体のサイズ (バイト単位)。
戻り値
型: UINT
pData が NULL で、関数が成功した場合、戻り値は 0 になります。 pData が NULL ではなく、関数が成功した場合、戻り値は pData に書き込まれた RAWINPUT 構造体の数です。
エラーが発生した場合、戻り値は (UINT)-1 になります。 エラー コードに 対して GetLastError を呼び出します。
注釈
アプリケーションが生入力を受信すると、そのメッセージ キューは WM_INPUT メッセージを取得し、キューの状態フラグ QS_RAWINPUT が設定されます。
GetRawInputBuffer を使用すると、生入力データは可変サイズの RAWINPUT 構造体の配列で読み取られ、対応するWM_INPUTメッセージが呼び出し元のスレッドのメッセージ キューから削除されます。 このメソッドは、すべての未加工の入力メッセージが読み取られるまで、すべてのメッセージのデータに収まらないバッファーを使用して複数回呼び出すことができます。
NEXTRAWINPUTBLOCK マクロを使用すると、アプリケーションは RAWINPUT 構造体の配列を走査できます。
すべての未加工の入力メッセージがメッセージ キューから正常に読み取られた場合は、呼び出し元スレッドのメッセージ キューの状態から QS_RAWINPUT フラグがクリアされます。
注意
WOW64: 生入力バッファーの正しいサイズを取得するには、*pcbSize を使用しないでください。代わりに *pcbSize * 8 を使用してください。 WOW64 で GetRawInputBuffer が正しく動作するようにするには、RAWINPUT 構造体を 8 バイトずつ揃える必要があります。 次のコードは、WOW64 の RAWINPUT を調整する方法を示しています。
[StructLayout(LayoutKind.Explicit)]
internal struct RAWINPUT
{
[FieldOffset(0)]
public RAWINPUTHEADER header;
[FieldOffset(16+8)]
public RAWMOUSE mouse;
[FieldOffset(16+8)]
public RAWKEYBOARD keyboard;
[FieldOffset(16+8)]
public RAWHID hid;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winuser.h (Windows.h を含む) |
Library | User32.lib |
[DLL] | User32.dll |
関連項目
概念
参照