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
Referencia