Compartir a través de


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. El puntero debe alinearse en un límite DWORD (32 bits).

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 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.

Observaciones

Los dispositivos devueltos desde 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.

Los dispositivos de entrada a los que se accede a través de Protocal de Escritorio remoto (RDP) no aparecen en la lista de dispositivos de entrada sin procesar.

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 Importancia
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado winuser.h (incluya Windows.h)
Biblioteca User32.lib
DLL de User32.dll
conjunto de API de ext-ms-win-ntuser-rawinput-l1-1-0 (introducido en Windows 10, versión 10.0.14393)

Consulte también

conceptual de

GetRawInputDeviceInfo

RAWINPUTDEVICELIST

de entrada sin procesar