Программы на C++. Форум разработчиков
Anonymous
Winapi - getRawInputBuffer
Сообщение
Anonymous » 29 июл 2025, 01:13
У меня есть проблемы с GetRawInputBuffer. Код не возвращает ошибки, но в полученном ответе нет данных.
Код: Выделить всё
UINT RawInputSize;
UINT Result;
Result = GetRawInputBuffer(NULL, &(RawInputSize), sizeof(RAWINPUTHEADER));
if (Result == -1)
{
DWORD ErrorCode = GetLastError();
return;
}
UINT AllocatedBufferByteCount = RawInputSize * 16;
RAWINPUT* RawInputBuffer = reinterpret_cast(malloc(AllocatedBufferByteCount));
UINT AllocatedBufferByteCountTwo = AllocatedBufferByteCount;
Result = GetRawInputBuffer(RawInputBuffer, &(AllocatedBufferByteCountTwo), sizeof(RAWINPUTHEADER));
if (Result == -1)
{
DWORD ErrorCode = GetLastError();
return;
}
UINT RawInputCount = Result;
RAWINPUT* RawInput = RawInputBuffer;
for (unsigned int i = 0; i < RawInputCount; ++i)
{
switch (RawInput->header.dwType)
{
case RIM_TYPEMOUSE:
{
this->UpdateMouse(RawInput->data.mouse);
break;
}
case RIM_TYPEKEYBOARD:
{
this->UpdateKeyboard(RawInput->data.keyboard);
break;
}
}
RawInput = NEXTRAWINPUTBLOCK(RawInput);
}
DefRawInputProc(&(RawInputBuffer), RawInputCount, sizeof(RAWINPUTHEADER));
< /code>
Этот код называется внешним корпусом wm_input < /code>. RawinputCount всегда нулевой. Если я использую getRawInputData внутренний случай wm_input , я правильно получаю данные.
Что не так с этим кодом и почему мои результаты пусты?
Подробнее здесь:
https://stackoverflow.com/questions/288 ... nputbuffer
1753740818
Anonymous
У меня есть проблемы с GetRawInputBuffer. Код не возвращает ошибки, но в полученном ответе нет данных.[code] UINT RawInputSize; UINT Result; Result = GetRawInputBuffer(NULL, &(RawInputSize), sizeof(RAWINPUTHEADER)); if (Result == -1) { DWORD ErrorCode = GetLastError(); return; } UINT AllocatedBufferByteCount = RawInputSize * 16; RAWINPUT* RawInputBuffer = reinterpret_cast(malloc(AllocatedBufferByteCount)); UINT AllocatedBufferByteCountTwo = AllocatedBufferByteCount; Result = GetRawInputBuffer(RawInputBuffer, &(AllocatedBufferByteCountTwo), sizeof(RAWINPUTHEADER)); if (Result == -1) { DWORD ErrorCode = GetLastError(); return; } UINT RawInputCount = Result; RAWINPUT* RawInput = RawInputBuffer; for (unsigned int i = 0; i < RawInputCount; ++i) { switch (RawInput->header.dwType) { case RIM_TYPEMOUSE: { this->UpdateMouse(RawInput->data.mouse); break; } case RIM_TYPEKEYBOARD: { this->UpdateKeyboard(RawInput->data.keyboard); break; } } RawInput = NEXTRAWINPUTBLOCK(RawInput); } DefRawInputProc(&(RawInputBuffer), RawInputCount, sizeof(RAWINPUTHEADER)); < /code> Этот код называется внешним корпусом wm_input < /code>. RawinputCount [/code] всегда нулевой. Если я использую getRawInputData внутренний случай wm_input , я правильно получаю данные. Что не так с этим кодом и почему мои результаты пусты? Подробнее здесь: [url]https://stackoverflow.com/questions/28879021/winapi-getrawinputbuffer[/url]