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
Riferimento