Как организовать обратную связь из filter-hook sys драйвера обратно в windows приложение? Например пришел(ушел) инет пакет как из функции PF_FORWARD_ACTION filterFunc(...) сразуже сообшить в user-mode приложение - (в смысле interprocess comunication PostMessage() или тому подобное)?
Как можно сделать чтоб из драйвера перед вызовом KeSetEvent() передать информацию в user-mode приложение (в какое-нибуть место в памяти и т.д.) чтобы в user-mode треде после завершения WaitForSigleObject() не использовать обращение к драйверу deviceiocontrol(...) на передачу нужной информации а взять и прочитать ее из 'заданного' места памяти куда ее драйвер запишет? (для ускорения обмена с драйвером) Thread() while(true){ WaitForSingleObject(); "read some memory location" ... }
Можно ли по примеру выделения памяти для чтения из user-mode "Драйверы режима ядра: Часть 9" использовать "ввод-вывод без управления" (Часть 5: Полнофункциональный драйвер) т.е. user-mode выделяет у себя память и посылает DeviceIoControl(тип,"ввод-вывод без управления") а kernel-mode driver используя in(out) параметры блокирует их в памяти и т.д. чтобы адрес был постоянным для user-mode. ввод-вывод без управления Диспетчер ввода-вывода помещает в поле DeviceIoControl.Type3InputBuffer структуры IO_STACK_LOCATION указатель на пользовательский входной буфер, а в поле UserBuffer структуры _IRP указатель на пользовательский выходной буфер и оставляет драйверу возможность управлять ими самостоятельно. Т.о. вся ответственность за управление пользовательскими буферами ложится на драйвер. Он может блокировать их в памяти, отображать на системное адресное пространство или обращаться к ним напрямую и т.д.
Да. IoAllocateMdl __try { MmProbeAndLockPages } Если надо отобразить в ядро, то + ещё MmGetSystemAddressForMdlSafe