Функция 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) |
См. также раздел
Основные понятия
Справочные материалы