Função GetRawInputBuffer (winuser.h)
Executa uma leitura em buffer dos dados brutos de mensagens de entrada encontrados na fila de mensagens do thread de chamada.
Sintaxe
UINT GetRawInputBuffer(
[out, optional] PRAWINPUT pData,
[in, out] PUINT pcbSize,
[in] UINT cbSizeHeader
);
Parâmetros
[out, optional] pData
Tipo: PRAWINPUT
Um ponteiro para um buffer de estruturas RAWINPUT que contêm os dados de entrada brutos. O buffer deve ser alinhado em um limite de ponteiro, que é um DWORD em arquiteturas de 32 bits e um QWORD em arquiteturas de 64 bits.
Se NULL, o tamanho dos primeiros dados brutos de mensagem de entrada (buffer mínimo necessário), em bytes, será retornado em *pcbSize.
[in, out] pcbSize
Tipo: PUINT
O tamanho, em bytes, do buffer RAWINPUT fornecido.
[in] cbSizeHeader
Tipo: UINT
O tamanho, em bytes, da estrutura RAWINPUTHEADER .
Retornar valor
Tipo: UINT
Se pData for NULL e a função for bem-sucedida, o valor retornado será zero. Se pData não for NULL e a função for bem-sucedida, o valor retornado será o número de estruturas RAWINPUT gravadas em pData.
Se ocorrer um erro, o valor retornado será (UINT)-1. Chame GetLastError para o código de erro.
Comentários
Quando um aplicativo recebe entrada bruta, sua fila de mensagens obtém uma mensagem WM_INPUT e o sinalizador de status de fila QS_RAWINPUT é definido.
Usando GetRawInputBuffer, os dados de entrada brutos são lidos na matriz de estruturas RAWINPUT de tamanho variável e as mensagens de WM_INPUT correspondentes são removidas da fila de mensagens do thread de chamada. Você pode chamar esse método várias vezes com buffer que não pode caber todos os dados da mensagem até que todas as mensagens de entrada brutas tenham sido lidas.
A macro NEXTRAWINPUTBLOCK permite que um aplicativo percorra uma matriz de estruturas RAWINPUT .
Se todas as mensagens de entrada brutas tiverem sido lidas com êxito da fila de mensagens, QS_RAWINPUT sinalizador será limpo da fila de mensagens do thread de chamada status.
Observação
WOW64: para obter o tamanho correto do buffer de entrada bruto, não use *pcbSize, use *pcbSize * 8 em vez disso. Para garantir que GetRawInputBuffer se comporte corretamente em WOW64, você deve alinhar a estrutura RAWINPUT em 8 bytes. O código a seguir mostra como alinhar RAWINPUT para 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;
}
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 |
Confira também
Conceitual
Referência