Поделиться через


Функция 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, функция заполняет эту переменную количеством устройств, подключенных к системе; В противном случае эта переменная указывает количество структур RAWINPUTDEVICELIST , которые могут содержаться в буфере, к которому указывает pRawInputDeviceList . Если это значение меньше числа устройств, подключенных к системе, функция возвращает фактическое число устройств в этой переменной и завершается сбоем с ERROR_INSUFFICIENT_BUFFER. Если это значение больше или равно числу устройств, подключенных к системе, значение не изменяется, а количество устройств указывается в качестве возвращаемого значения.

[in] cbSize

Тип: UINT

Размер структуры RAWINPUTDEVICELIST в байтах.

Возвращаемое значение

Тип: UINT

При успешном выполнении функции возвращается число устройств, хранящихся в буфере, на которое указывает pRawInputDeviceList.

При любой другой ошибке функция возвращает (UINT) -1, а GetLastError — указание на ошибку.

Комментарии

Устройства, возвращаемые этой функцией, — это мышь, клавиатура и другие устройства HID.

Чтобы получить более подробные сведения о подключенных устройствах, вызовите Метод GetRawInputDeviceInfo с помощью hDevice из RAWINPUTDEVICELIST.

Примеры

В следующем примере кода показан типичный вызов 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
Header 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

Необработанные входные данные

Справочные материалы