共用方式為


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,第一個原始輸入訊息數據的大小 (最小必要緩衝區) ,以位元組為單位,則會以 *mbSize 傳回。

[in, out] pcbSize

類型: PUINT

所提供 RAWINPUT 緩衝區的大小,以位元組為單位。

[in] cbSizeHeader

類型: UINT

RAWINPUTHEADER 結構的大小,以位元組為單位。

傳回值

類型: UINT

如果 pDataNULL 且函式成功,則傳回值為零。 如果 pData 不是 NULL 且函式成功,則傳回值是寫入 pData的 RAWINPUT 結構數目。

如果發生錯誤,傳回值會 (UINT) -1。 針對錯誤碼呼叫 GetLastError

備註

當應用程式收到原始輸入時,其訊息佇列會取得 WM_INPUT 訊息,並設定佇列狀態旗標 QS_RAWINPUT

使用 GetRawInputBuffer 時,原始輸入數據會在 可變大小的 RAWINPUT 結構陣列中讀取,而對應的 WM_INPUT 訊息會從呼叫線程的訊息佇列中移除。 您可以在讀取所有原始輸入訊息之前,使用無法容納所有訊息數據的緩衝區多次呼叫此方法。

NEXTRAWINPUTBLOCK 宏可讓應用程式周遊 RAWINPUT 結構的數位。

如果所有原始輸入訊息都已成功從消息佇列讀取,則會從呼叫線程的訊息佇列狀態中清除 QS_RAWINPUT 旗標。

注意

WOW64:若要取得原始輸入緩衝區的正確大小,請勿使用 *androidSize,請改用 *androidSize * 8。 若要確保 GetRawInputBuffer 在 WOW64 上正常運作,您必須將 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)
程式庫 User32.lib
Dll User32.dll

另請參閱

概念

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

原始輸入

參考

原始輸入概觀