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

如果 pRawInputDeviceListNULL,函数将使用附加到系统的设备数填充此变量;否则,此变量指定 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 ()

请参阅

概念性

GetRawInputDeviceInfo

RAWINPUTDEVICELIST

原始输入

引用