как: сделать двухстороннюю связь между режимом пользователя и режимом ядра

Я написал драйвер, который извлекает значение из буфера IRP. Теперь, основываясь на этом ключевом слове, я должен передать или отказаться от IRP. Поэтому мне нужно общаться с базой данных, что непросто из драйвера режима ядра. Поэтому я использую приложение или исполняемый файл для этого, что приведет к истинному или ложному результату, в зависимости от которого я передам или откажусь от IRP.

Я хочу связать драйвер с приложением, чтобы я получал данные в клиентском приложении.

Я думал об использовании временного файла, который может действовать как канал.

Пожалуйста, предложите что-нибудь.


person harshit    schedule 26.06.2012    source источник


Ответы (1)


Я бы пошел с IOCTL.

Взаимодействие приложения с базой данных начинается с отправки драйверу одного или нескольких IOCTL. Назовем IOCTL этого типа IOCTL-1.

Завершение IOCTL-1 означает запрос от драйвера к базе данных. Детали запроса могут быть переданы в выходной буфер IOCTL.

Приложение обнаруживает завершение IOCTL-1, извлекает сведения о запросе, выполняет запрос и передает результаты драйверу, используя другой IOCTL (IOCTL-2). Затем он повторно отправляет IOCTL-1, чтобы драйвер мог выдать другой запрос.

person glagolig    schedule 27.06.2012