2010-11-29 4 views
5

Я пытаюсь создать очень простой драйвер. Его единственная цель - зарегистрировать «PsSetCreateProcessNotifyRoutine» и обратные вызовы, полученные из ядра, уведомить мое приложение Win32 о том, какие процессы запускаются и останавливаются.Связь между приложением delphi и системным драйвером Windows NT

Я знаю, как построить такой простой драйвер с помощью «DriverEntry» и «DriverUnload» и скомпилировать его с помощью DDK. Но я не знаю, как реально осуществлять общение. Я знаю, что это можно сделать с помощью IOCTL. Но помимо этого я в темноте. Я не могу найти простой пример того, как это сделать в Delphi. Я знаю только, что это можно сделать.

Итак, что я ищу, это простой и понятный учебник о том, как это сделать или событие лучше, например, программу delphi с кодом драйвера acompaniying. Возможно, есть и другие способы общения.

Любая помощь будет назначена.

+2

Бегун проверить этот вопрос http://stackoverflow.com/questions/3489501/how-to-recognize-that-an-application-intends-to-execute-run-a-file/3489779#3489779 WMI имеет Событие ExecNotificationQuery в сочетании с классом Win32_Process может обнаруживать, когда процесс запускается или остановлен. – RRUZ 2010-11-29 16:55:55

+0

Спасибо за информацию. Я вообще не люблю WMI, но в этом случае стоит посмотреть. Водитель действительно довольно радикальный выбор здесь, даже если он очень эффективен. – Runner 2010-11-29 20:35:30

ответ

2

Не имеет значения, если в Delphi или нет. Вы должны использовать функцию DeviceIoControl. Прочитайте об этом article in MSDN.

Одним словом, вам нужно будет выбрать IOCTL codes из имеющегося набора. Затем вы вызываете DeviceIoControl с одним из этих кодов и передаете некоторые данные, а в драйвере вы обрабатываете этот запрос и возвращаете что-то еще.

Вы также можете обрабатывать стандартные IOCTLS, такие как те, которые генерируются при вызове ReadFile или WriteFile в пользовательском режиме.

Не ищите «учебник, как это сделать в Delphi», просто найдите любой учебник. Они все одинаковые, независимо от языка, это чистый материал Win32/Native Api. Here's one, например, просто погуглил.

Смежные вопросы