Compartir a través de


Función GetRawInputBuffer (winuser.h)

Realiza una lectura almacenada en búfer de los datos de mensajes de entrada sin procesar que se encuentran en la cola de mensajes del subproceso que realiza la llamada.

Sintaxis

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

Parámetros

[out, optional] pData

Tipo: PRAWINPUT

Puntero a un búfer de estructuras RAWINPUT que contienen los datos de entrada sin procesar. El búfer debe alinearse en un límite de puntero, que es una DWORD en arquitecturas de 32 bits y una QWORD en arquitecturas de 64 bits.

Si es NULL, el tamaño de los primeros datos de mensaje de entrada sin procesar (búfer mínimo necesario), en bytes, se devuelve en *pcbSize.

[in, out] pcbSize

Tipo: PUINT

Tamaño, en bytes, del búfer RAWINPUT proporcionado.

[in] cbSizeHeader

Tipo: UINT

Tamaño, en bytes, de la estructura RAWINPUTHEADER .

Valor devuelto

Tipo: UINT

Si pData es NULL y la función se ejecuta correctamente, el valor devuelto es cero. Si pData no es NULL y la función se ejecuta correctamente, el valor devuelto es el número de estructuras RAWINPUT escritas en pData.

Si se produce un error, el valor devuelto es (UINT)-1. Llame a GetLastError para el código de error.

Comentarios

Cuando una aplicación recibe una entrada sin procesar, su cola de mensajes obtiene un mensaje WM_INPUT y se establece la marca de estado de la cola QS_RAWINPUT .

Con GetRawInputBuffer, los datos de entrada sin procesar se leen en la matriz de estructuras RAWINPUT de tamaño variable y los mensajes de WM_INPUT correspondientes se quitan de la cola de mensajes del subproceso que realiza la llamada. Puede llamar a este método varias veces con el búfer que no puede ajustarse a todos los datos del mensaje hasta que se hayan leído todos los mensajes de entrada sin procesar.

La macro NEXTRAWINPUTBLOCK permite que una aplicación recorra una matriz de estructuras RAWINPUT .

Si todos los mensajes de entrada sin procesar se han leído correctamente desde la cola de mensajes, QS_RAWINPUT marca se borra del estado de la cola de mensajes del subproceso de llamada.

Nota

WOW64: Para obtener el tamaño correcto del búfer de entrada sin procesar, no use *pcbSize, use *pcbSize * 8 en su lugar. Para asegurarse de que GetRawInputBuffer se comporta correctamente en WOW64, debe alinear la estructura RAWINPUT en 8 bytes. En el código siguiente se muestra cómo alinear 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 Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll

Consulte también

Conceptual

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

Entrada sin procesar

Referencia

Introducción a la entrada sin procesar