Здравствуйте Andrew__S, Вы писали:
AS>Подскажите, пожалуйста, как можно из драйвера под NT (.sys, kernel mode)
AS>вызвать функцию dll (user mode) при уже загруженных виндах?
Правильный ответ: никак. Нельзя из kernel-mode вызывать user-mode код.
Если ты хочешь из драйвера сообщить user-mode программе о каком-то событии, то у тебя есть выбор из двух вариантов:
1) Иметь объект события, доступный как в драйвере, так и в приложении. При возникновении события, драйвер переводит объект в signaled state, а приложение, соответственно, ждет на этом объекте.
Смотри также:
Q176415 Event.exe Shows How to Share and Signal an Event Object
http://support.microsoft.com/support/kb/articles/Q176/4/15.asp
2) Приложение посылает в драйвер ioctl посредством DeviceIoControl, который драйвер возвращает со статусом STATUS_PENDING. Когда происходит событие, драйвер завершает этот ioctl. Со стороны приложения это выглядит как длительная операция ввода/вывода.