Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Выполняет буферизованное чтение необработанных входных сообщений, найденных в очереди сообщений вызывающего потока.
Синтаксис
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 |
См. также
Концептуальный
Справочные материалы