Función GetRawInputDeviceList (winuser.h)

Enumera los dispositivos de entrada sin procesar conectados al sistema.

Sintaxis

UINT GetRawInputDeviceList(
  [out, optional] PRAWINPUTDEVICELIST pRawInputDeviceList,
  [in, out]       PUINT               puiNumDevices,
  [in]            UINT                cbSize
);

Parámetros

[out, optional] pRawInputDeviceList

Tipo: PRAWINPUTDEVICELIST

Matriz de estructuras RAWINPUTDEVICELIST para los dispositivos conectados al sistema. Si es NULL, el número de dispositivos se devuelve en *puiNumDevices.

[in, out] puiNumDevices

Tipo: PUINT

Si pRawInputDeviceList es NULL, la función rellena esta variable con el número de dispositivos conectados al sistema; de lo contrario, esta variable especifica el número de estructuras RAWINPUTDEVICELIST que se pueden incluir en el búfer al que apunta pRawInputDeviceList . Si este valor es menor que el número de dispositivos conectados al sistema, la función devuelve el número real de dispositivos de esta variable y se produce un error con ERROR_INSUFFICIENT_BUFFER. Si este valor es mayor o igual que el número de dispositivos conectados al sistema, el valor no cambia y el número de dispositivos se notifica como el valor devuelto.

[in] cbSize

Tipo: UINT

Tamaño de una estructura RAWINPUTDEVICELIST , en bytes.

Valor devuelto

Tipo: UINT

Si la función se ejecuta correctamente, el valor devuelto es el número de dispositivos almacenados en el búfer al que apunta pRawInputDeviceList.

En cualquier otro error, la función devuelve (UINT) -1 y GetLastError devuelve la indicación de error.

Comentarios

Los dispositivos devueltos de esta función son el mouse, el teclado y otros dispositivos de dispositivo de interfaz humana (HID).

Para obtener información más detallada sobre los dispositivos conectados, llame a GetRawInputDeviceInfo mediante hDevice de RAWINPUTDEVICELIST.

Ejemplos

El código de ejemplo siguiente muestra una llamada típica a 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);

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluir Windows.h)
Library User32.lib
Archivo DLL User32.dll
Conjunto de API ext-ms-win-ntuser-rawinput-l1-1-0 (introducido en Windows 10, versión 10.0.14393)

Consulte también

Conceptual

GetRawInputDeviceInfo

RAWINPUTDEVICELIST

Entrada sin procesar

Referencia