GetRawInputDeviceList 函数 (winuser.h)
枚举附加到系统的原始输入设备。
语法
UINT GetRawInputDeviceList(
[out, optional] PRAWINPUTDEVICELIST pRawInputDeviceList,
[in, out] PUINT puiNumDevices,
[in] UINT cbSize
);
参数
[out, optional] pRawInputDeviceList
类型: PRAWINPUTDEVICELIST
附加到系统的设备的 RAWINPUTDEVICELIST 结构的数组。 如果 为 NULL,则设备数在 *puiNumDevices 中返回。
[in, out] puiNumDevices
类型: PUINT
如果 pRawInputDeviceList 为 NULL,函数将使用附加到系统的设备数填充此变量;否则,此变量指定 pRawInputDeviceList 指向的缓冲区中可以包含的 RAWINPUTDEVICELIST 结构 的数目。 如果此值小于附加到系统的设备数,则函数将返回此变量中的实际设备数,并失败并 ERROR_INSUFFICIENT_BUFFER。 如果此值大于或等于附加到系统的设备数,则该值保持不变,并将设备数报告为返回值。
[in] cbSize
类型: UINT
RAWINPUTDEVICELIST 结构的大小(以字节为单位)。
返回值
类型: UINT
如果函数成功,则返回值是 pRawInputDeviceList 指向的缓冲区中存储的设备数。
如果出现任何其他错误,该函数返回 (UINT) - 1,GetLastError 返回错误指示。
注解
从此函数返回的设备是鼠标、键盘和其他人机接口设备 (HID) 设备。
若要获取有关附加设备的详细信息,请使用 RAWINPUTDEVICELIST 中的 hDevice 调用 GetRawInputDeviceInfo。
示例
以下示例代码演示对 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 [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
API 集 | 在 Windows 10 版本 10.0.14393 中引入的 ext-ms-win-ntuser-rawinput-l1-1-0 () |
请参阅
概念性
引用