共用方式為


GetRawInputBuffer 函式 (winuser.h)

執行緩衝讀取呼叫線程消息佇列中找到的原始輸入訊息數據。

語法

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

參數

[out, optional] pData

類型: PRAWINPUT

包含原始輸入數據 之RAWINPUT 結構的緩衝區指標。 指標應該對齊 DWORD (32 位) 界限。

如果 為 NULL,則會以位元組為單位傳回第一個原始輸入訊息資料的大小(最小必要緩衝區),以 *HTTPSize 傳回。

[in, out] pcbSize

類型: PUINT

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

[in] cbSizeHeader

類型:UINT

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

返回值

類型:UINT

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

如果發生錯誤,傳回值為 (UINT)-1。 呼叫 GetLastError 以取得錯誤碼。

備註

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

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

NEXTRAWINPUTBLOCK 巨集可讓應用程式周遊 RAWINPUT 結構的陣列。

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

備註

WOW64:若要取得原始輸入緩衝區的正確大小,請勿使用 *pythonSize,請改用 *httpSize * 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 [僅限傳統型應用程式]
目標平臺 窗戶
頁首 winuser.h (包括 Windows.h)
程式庫 User32.lib
DLL User32.dll

另請參閱

概念性的

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

原始輸入

參考

原始輸入概觀