Funzione GetRawInputDeviceList (winuser.h)

Enumera i dispositivi di input non elaborati collegati al sistema.

Sintassi

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

Parametri

[out, optional] pRawInputDeviceList

Tipo: PRAWINPUTDEVICELIST

Matrice di strutture RAWINPUTDEVICELIST per i dispositivi collegati al sistema. Se NULL, il numero di dispositivi viene restituito in *puiNumDevices.

[in, out] puiNumDevices

Tipo: PUINT

Se pRawInputDeviceList è NULL, la funzione popola questa variabile con il numero di dispositivi collegati al sistema; in caso contrario, questa variabile specifica il numero di strutture RAWINPUTDEVICELIST che possono essere contenute nel buffer in cui pRawInputDeviceList punta. Se questo valore è minore del numero di dispositivi collegati al sistema, la funzione restituisce il numero effettivo di dispositivi in questa variabile e non riesce con ERROR_INSUFFICIENT_BUFFER. Se questo valore è maggiore o uguale al numero di dispositivi collegati al sistema, il valore è invariato e il numero di dispositivi viene segnalato come valore restituito.

[in] cbSize

Tipo: UINT

Dimensioni di una struttura RAWINPUTDEVICELIST , in byte.

Valore restituito

Tipo: UINT

Se la funzione ha esito positivo, il valore restituito è il numero di dispositivi archiviati nel buffer a cui fa riferimento pRawInputDeviceList.

In qualsiasi altro errore, la funzione restituisce (UINT) -1 e GetLastError restituisce l'indicazione dell'errore.

Commenti

I dispositivi restituiti da questa funzione sono il mouse, la tastiera e altri dispositivi HID (Human Interface Device).

Per ottenere informazioni più dettagliate sui dispositivi collegati, chiamare GetRawInputDeviceInfo usando hDevice from RAWINPUTDEVICELIST.

Esempio

Il codice di esempio seguente mostra una chiamata tipica 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);

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll
Set di API ext-ms-win-ntuser-rawinput-l1-1-0 (introdotta in Windows 10, versione 10.0.14393)

Vedi anche

Informazioni concettuali

GetRawInputDeviceInfo

RAWINPUTDEVICELIST

Input non elaborato

Riferimento