Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Выполняет буферизованное чтение необработанных входных сообщений, найденных в очереди сообщений вызывающего потока.
Синтаксис
UINT GetRawInputBuffer(
[out, optional] PRAWINPUT pData,
[in, out] PUINT pcbSize,
[in] UINT cbSizeHeader
);
Параметры
[out, optional] pData
Тип: PRAWINPUT
Указатель на буфер структур RAWINPUT , содержащих необработанные входные данные. Указатель должен быть выровнен на границе DWORD (32-разрядная версия).
Если значение NULL, размер первого необработанного входного сообщения (минимальный обязательный буфер) в байтах возвращается в *pcbSize.
[in, out] pcbSize
Тип: PUINT
Размер в байтах предоставленного буфера RAWINPUT .
[in] cbSizeHeader
Тип: UINT
Размер структуры RAWINPUTHEADER в байтах.
Возвращаемое значение
Тип: UINT
Если значение pData равно NULL , а функция выполнена успешно, возвращаемое значение равно нулю. Если pData не равно NULL и функция выполнена успешно, возвращаемое значение является числом структур RAWINPUT , записанных в pData.
Если возникает ошибка, возвращаемое значение равно (UINT)-1. Вызовите GetLastError для кода ошибки.
Замечания
Когда приложение получает необработанные входные данные, очередь сообщений получает сообщение WM_INPUT и задается флаг состояния очереди QS_RAWINPUT .
Используя GetRawInputBuffer, необработанные входные данные считываются в массиве структур RAWINPUT размера переменной и соответствующие сообщения WM_INPUT удаляются из очереди сообщений вызывающего потока. Этот метод можно вызывать несколько раз с буфером, который не может соответствовать всем данным сообщения до тех пор, пока не будут прочитаны все необработанные входные сообщения.
Макрос NEXTRAWINPUTBLOCK позволяет приложению проходить по массиву структур RAWINPUT .
Если все необработанные входные сообщения успешно считываются из очереди сообщений, QS_RAWINPUT флаг очищается от состояния очереди сообщений вызывающего потока.
Замечание
WOW64: Чтобы получить правильный размер необработанного входного буфера, не используйте *pcbSize, используйте *pcbSize * 8. Чтобы обеспечить правильное поведение GetRawInputBuffer в WOW64, необходимо выровнять структуру RAWINPUT на 8 байт. В следующем коде показано, как выровнять RAWINPUT для 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;
}
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows XP [только классические приложения] |
| минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
| целевая платформа | Виндоус |
| Заголовок | winuser.h (включая Windows.h) |
| Библиотека | User32.lib |
| Библиотека dll | User32.dll |
См. также
Концептуальный
Справочные материалы