2010-11-29 115 views
5

我想構建一個非常簡單的驅動程序。它的唯一目的是註冊「PsSetCreateProcessNotifyRoutine」和從內核收到的回調函數,通知我的Win32應用程序啓動和停止哪些進程。delphi應用程序和Windows NT系統驅動程序之間的通信

我只知道如何使用「DriverEntry」和「DriverUnload」構建這樣一個簡單的驅動程序並使用DDK進行編譯。但我不知道如何實際實施溝通。我知道這可以通過IOCTL完成。但除此之外,我處於黑暗中。我無法找到在Delphi中如何做到這一點的簡單例子。我只知道它可以做到。

所以我正在尋找的是一些簡單和易於理解的教程,如何做到這一點或事件更好的示例delphi程序與acompaniying驅動程序代碼。也許還有其他的溝通方式。

任何幫助將appriciated。

+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生成的標準IOCTLS。

不要尋找一個「教程如何在Delphi中做到這一點」,只要看看任何教程。它們都是一樣的,不管語言如何,它都是純粹的Win32/Native API。例如,Here's one,只是Google搜索出來。

相關問題