Função GetRawInputDeviceList (winuser.h)

Enumera os dispositivos de dados brutos anexados ao sistema.

Sintaxe

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

Parâmetros

[out, optional] pRawInputDeviceList

Tipo: PRAWINPUTDEVICELIST

Uma matriz de estruturas RAWINPUTDEVICELIST para os dispositivos anexados ao sistema. Se FOR NULL, o número de dispositivos será retornado em *puiNumDevices.

[in, out] puiNumDevices

Tipo: PUINT

Se pRawInputDeviceList for NULL, a função preencherá essa variável com o número de dispositivos anexados ao sistema; caso contrário, essa variável especifica o número de estruturas RAWINPUTDEVICELIST que podem estar contidas no buffer ao qual pRawInputDeviceList aponta. Se esse valor for menor que o número de dispositivos anexados ao sistema, a função retornará o número real de dispositivos nessa variável e falhará com ERROR_INSUFFICIENT_BUFFER. Se esse valor for maior ou igual ao número de dispositivos anexados ao sistema, o valor será inalterado e o número de dispositivos será relatado como o valor retornado.

[in] cbSize

Tipo: UINT

O tamanho de uma estrutura RAWINPUTDEVICELIST , em bytes.

Retornar valor

Tipo: UINT

Se a função for bem-sucedida, o valor retornado será o número de dispositivos armazenados no buffer apontado por pRawInputDeviceList.

Em qualquer outro erro, a função retorna (UINT) -1 e GetLastError retorna a indicação de erro.

Comentários

Os dispositivos retornados dessa função são o mouse, o teclado e outros dispositivos HID (Dispositivo de Interface Humana).

Para obter informações mais detalhadas sobre os dispositivos anexados, chame GetRawInputDeviceInfo usando o hDevice de RAWINPUTDEVICELIST.

Exemplos

O código de exemplo a seguir mostra uma chamada típica para 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 Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll
Conjunto de APIs ext-ms-win-ntuser-rawinput-l1-1-0 (introduzido no Windows 10, versão 10.0.14393)

Confira também

Conceitual

GetRawInputDeviceInfo

RAWINPUTDEVICELIST

Dados brutos

Referência