GetRawInputBuffer 関数 (winuser.h)

呼び出し元スレッドのメッセージ キューにある生の入力メッセージ データのバッファー読み取りを実行します。

構文

UINT GetRawInputBuffer(
  [out, optional] PRAWINPUT pData,
  [in, out]       PUINT     pcbSize,
  [in]            UINT      cbSizeHeader
);

パラメーター

[out, optional] pData

型: PRAWINPUT

生入力データを含む RAWINPUT 構造体のバッファーへのポインター。 ポインターは DWORD (32 ビット) 境界に配置する必要があります。

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 (デスクトップ アプリのみ)
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winuser.h (Windows.h を含む)
図書館 User32.lib
DLL User32.dll

こちらも参照ください

概念

GetMessage の

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

生入力 を する

リファレンス

生入力の概要