GetRawInputDeviceList 函数 (winuser.h)

枚举附加到系统的原始输入设备。

语法

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

如果 pRawInputDeviceListNULL,则该函数将使用附加到系统的设备数填充此变量;否则,此变量指定可包含在 pRawInputDeviceList 指向的缓冲区中的 RAWINPUTDEVICELIST 结构数。 如果此值小于附加到系统的设备数,该函数将返回此变量中的实际设备数,并失败并 出现ERROR_INSUFFICIENT_BUFFER。 如果此值大于或等于附加到系统的设备数,则该值保持不变,并将设备数报告为返回值。

[in] cbSize

类型:UINT

RAWINPUTDEVICELIST 结构的大小(以字节为单位)。

返回值

类型:UINT

如果函数成功,则返回值为 pRawInputDeviceList 指向的缓冲区中存储的设备数。

在任何其他错误中,函数返回 (UINT-1,GetLastError 返回错误指示。

注解

从此函数返回的设备是鼠标、键盘和其他人机接口设备(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 [仅限桌面应用]
目标平台 Windows操作系统
标头 winuser.h (包括 Windows.h)
图书馆 User32.lib
DLL User32.dll
API 集 ext-ms-win-ntuser-rawinput-l1-1-0(在 Windows 10 版本 10.0.14393 中引入)

另请参阅

概念

GetRawInputDeviceInfo

RAWINPUTDEVICELIST

原始输入