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


Функция 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

Если pRawInputDeviceList имеет значение NULL, функция заполняет эту переменную числом устройств, подключенных к системе; В противном случае эта переменная указывает количество структур RAWINPUTDEVICELIST , которые могут содержаться в буфере, к которому указываются точки pRawInputDeviceList . Если это значение меньше числа устройств, подключенных к системе, функция возвращает фактическое количество устройств в этой переменной и завершается сбоем с ERROR_INSUFFICIENT_BUFFER. Если это значение больше или равно количеству устройств, подключенных к системе, значение не изменяется, а число устройств сообщается как возвращаемое значение.

[in] cbSize

Тип: UINT

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

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

Тип: UINT

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

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

Замечания

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

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

Устройства ввода, доступные через 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 [только классические приложения]
целевая платформа Виндоус
Заголовок 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

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