列舉連結至系統的原始輸入設備。
語法
UINT GetRawInputDeviceList(
[out, optional] PRAWINPUTDEVICELIST pRawInputDeviceList,
[in, out] PUINT puiNumDevices,
[in] UINT cbSize
);
參數
[out, optional] pRawInputDeviceList
類型: PRAWINPUTDEVICELIST
連結至系統之裝置的 RAWINPUTDEVICELIST 結構陣列。 指標應該對齊 DWORD (32 位) 界限。
如果 為 NULL,則會在 *puiNumDevices 中傳回裝置數目。
[in, out] puiNumDevices
類型: PUINT
如果 pRawInputDeviceList 為 NULL,此函式會將連結至系統的裝置數目填入此變數;否則,這個變數會指定 pRawInputDeviceList 指向之緩衝區中的 RAWINPUTDEVICELIST 結構數目。 如果此值小於連結至系統的裝置數目,此函式會傳回此變數中實際裝置數目,並因 ERROR_INSUFFICIENT_BUFFER而失敗。 如果此值大於或等於附加至系統的裝置數目,則值不會變更,且裝置數目會回報為傳回值。
[in] cbSize
類型:UINT
RAWINPUTDEVICELIST 結構的大小,以位元組為單位。
返回值
類型:UINT
如果函式成功,傳回值就是 pRawInputDeviceList 所指向之緩衝區中儲存的裝置數目。
在任何其他錯誤上,函式會傳回 (UINT) -1, 而 GetLastError 會傳回錯誤指示。
備註
從此函式傳回的裝置是滑鼠、鍵盤和其他 Human Interface Device (HID) 裝置。
若要取得連結裝置的詳細資訊,請使用RAWINPUTDEVICELIST中的 hDevice 呼叫 GetRawInputDeviceInfo。
透過遠端桌面 Protocal (RDP) 存取的輸入裝置不會出現在原始輸入裝置清單中。
範例
下列範例程式代碼顯示 GetRawInputDeviceList 的一般呼叫:
UINT nDevices;
PRAWINPUTDEVICELIST pRawInputDeviceList = NULL;
while (true) {
if (GetRawInputDeviceList(NULL, &nDevices, sizeof(RAWINPUTDEVICELIST)) != 0) { Error();}
if (nDevices == 0) { break; }
if ((pRawInputDeviceList = malloc(sizeof(RAWINPUTDEVICELIST) * nDevices)) == NULL) {Error();}
nDevices = GetRawInputDeviceList(pRawInputDeviceList, &nDevices, sizeof(RAWINPUTDEVICELIST));
if (nDevices == (UINT)-1) {
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { Error(); }
// Devices were added.
free(pRawInputDeviceList);
continue;
}
break;
}
// do the job...
// after the job, free the RAWINPUTDEVICELIST
free(pRawInputDeviceList);
需求
| 要求 | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
| 目標平臺 | 窗戶 |
| 頁首 | winuser.h (包括 Windows.h) |
| 程式庫 | User32.lib |
| DLL | User32.dll |
| API 集 | ext-ms-win-ntuser-rawinput-l1-1-0 (在 Windows 10 版本 10.0.14393 中引進) |
另請參閱
概念性的