次の方法で共有


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

pDataNULL で、関数が成功した場合、戻り値は 0 になります。 pDataNULL ではなく、関数が成功した場合、戻り値は 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

関連項目

概念

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

未加工の入力

参照

生入力の概要