執行緩衝讀取呼叫線程消息佇列中找到的原始輸入訊息數據。
語法
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
如果 pData 為 NULL 且函式成功,則傳回值為零。 如果 pData 不是 NULL,而且函式成功,傳回值就是寫入 pData 的 RAWINPUT 結構數目。
如果發生錯誤,傳回值為 (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 |
另請參閱
概念性的
參考