Share via


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

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

Dados brutos

Referência

Visão geral de entrada bruta