Compartilhar via


Função GetRawInputBuffer (winuser.h)

Executa uma leitura em buffer dos dados brutos de mensagens de entrada encontradas 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 ponteiro deve ser alinhado em um limite DWORD (32 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 .

Valor de retorno

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.

Observações

Quando um aplicativo recebe entrada bruta, sua fila de mensagens obtém uma mensagem WM_INPUT e o sinalizador de status da 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 ajustar 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 do status da fila de mensagens do thread de chamada.

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 no 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 suportado Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo compatível Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
de DLL User32.dll

Consulte também

Conceitual

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

de Entrada Bruta

Referência

Visão geral da entrada bruta