Funzione GetRawInputBuffer (winuser.h)

Esegue una lettura memorizzata nel buffer dei dati dei messaggi di input non elaborati trovati nella coda dei messaggi del thread chiamante.

Sintassi

UINT GetRawInputBuffer(
  [out, optional] PRAWINPUT pData,
  [in, out]       PUINT     pcbSize,
  [in]            UINT      cbSizeHeader
);

Parametri

[out, optional] pData

Tipo: PRAWINPUT

Puntatore a un buffer di strutture RAWINPUT che contengono i dati di input non elaborati. Il buffer deve essere allineato su un limite del puntatore, ovvero una DWORD in architetture a 32 bit e una QWORD in architetture a 64 bit.

Se NULL, le dimensioni del primo dati del messaggio di input non elaborato (buffer minimo richiesto), in byte, vengono restituite in *pcbSize.

[in, out] pcbSize

Tipo: PUINT

Dimensione, in byte, del buffer RAWINPUT specificato.

[in] cbSizeHeader

Tipo: UINT

Dimensione, in byte, della struttura RAWINPUTHEADER .

Valore restituito

Tipo: UINT

Se pData è NULL e la funzione ha esito positivo, il valore restituito è zero. Se pData non è NULL e la funzione ha esito positivo, il valore restituito è il numero di strutture RAWINPUT scritte in pData.

Se si verifica un errore, il valore restituito è (UINT)-1. Chiamare GetLastError per il codice di errore.

Commenti

Quando un'applicazione riceve l'input non elaborato, la coda di messaggi ottiene un messaggio WM_INPUT e viene impostato il flag di stato della coda QS_RAWINPUT .

Usando GetRawInputBuffer, i dati di input non elaborati vengono letti nella matrice di strutture RAWINPUT di dimensioni variabili e i messaggi WM_INPUT corrispondenti vengono rimossi dalla coda dei messaggi del thread chiamante. È possibile chiamare questo metodo più volte con buffer che non può adattare tutti i dati del messaggio fino a quando non sono stati letti tutti i messaggi di input non elaborati.

La macro NEXTRAWINPUTBLOCK consente a un'applicazione di attraversare una matrice di strutture RAWINPUT .

Se tutti i messaggi di input non elaborati sono stati letti correttamente dalla coda dei messaggi, QS_RAWINPUT flag viene cancellato dallo stato della coda dei messaggi del thread chiamante.

Nota

WOW64: per ottenere le dimensioni corrette del buffer di input non elaborato, non usare *pcbSize, usare *pcbSize * 8. Per garantire che GetRawInputBuffer si comporti correttamente in WOW64, è necessario allineare la struttura RAWINPUT di 8 byte. Il codice seguente illustra come allineare RAWINPUT per WOW64.

[StructLayout(LayoutKind.Explicit)]
internal struct RAWINPUT
{
    [FieldOffset(0)]
    public RAWINPUTHEADER header;

    [FieldOffset(16+8)]
    public RAWMOUSE mouse;

    [FieldOffset(16+8)]
    public RAWKEYBOARD keyboard;

    [FieldOffset(16+8)]
    public RAWHID hid;
}

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

Vedi anche

Informazioni concettuali

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

Input non elaborato

Riferimento

Panoramica dell'input non elaborato