Насчёт NDIS IM конкретно не скажу, но у тебя должна же быть какая-то очередь? В обычных I/O-based фильтрах каждому потоку в каждый момент времени...
Это утверждение может быть корректно только там, где иначе никак.
Да, с этой точки зрения да, просто в ядре пайпы это как чёрный ящик, тупо читать/писать можно и всё. К слову, пайпы по производительности почти...
Недокументировано. Хороший вариант, так обычно и делаю. Слишком большой оверхед, imho. Недокументировано и, насколько я помню, имеет...
А откуда уверенность, что они вообще должны быть?
SetDbgPrintFiltering Ставишь 15 и не паришься.
Ты мог бы уложить это всё в 1-2 строчки.
Может быть, ну, называй.
Ну если первую часть вопроса я ещё как-то понял, то вторую, честно говоря, не очень. По поводу "обойти" читаем описании TranslateMessage():...
Тупишь вообще дико. Про второй параметр уже сказали, а хендл окна у тебя в lpMsg->hwnd будет.
Совершенно верно. Думаю, Shadow SDT хук тут самое оно будет. Выше уже подсказали про NtUserTranslateMessage().
Приложения не открывают напрямую \Device\KeyboardClass*, соответственно, в фильтре при чтении данных клавиатуры процесс приложения не виден.
Это не будет работать.
Поэтому обычно второй вызов делается с буфером, размер которого = ReturnLength * 2. За исключением ситуаций, когда информация требуется часто и её...
Строки, передающиеся как PWSTR (точнее WCHAR*), всегда должны сопровождаться 2-мя (USHORT) или 4-мя (ULONG) байтами длины. В ядре строки не...
Вообще, ошибка наведённая скорее всего. Что за тип драйвера-то хоть?
Угу, есть такое подозрение.
По-моему, тебе следует выспаться, ибо: 1. Файл дампа в первом посте прикреплён. 2. Функцию RtlInitUnicodeString() вызывает не его драйвер.
Да, ну тем не менее в случае с обычными SSDT-хуками работать будет. Если что-то покруче хукать, та да, как у тебя надо делать.
Правильнее было бы реализовать событие, сигнализирующее о том, что все перехватчики завершили своё выполнение. В DriverUnload() снимать хуки,...
Имена участников (разделяйте запятой).