Связь между приложением delphi и системным драйвером Windows NT - PullRequest
5 голосов
/ 29 ноября 2010

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

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

Итак, я ищу какое-то простое и понятное руководство о том, как это сделать, или, как лучше, пример программы Delphi с сопровождающим кодом драйвера.Может быть, есть и другие способы общения.

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

1 Ответ

2 голосов
/ 29 ноября 2010

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

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

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

Не ищите "учебник, как это сделать в Delphi", просто ищите любой учебник. Они все одинаковые, независимо от языка, это чистый Win32 / Native api. Вот, например, один , просто погуглил его.

...