2010-09-10 54 views
1

我正在編寫一個由內核模式驅動程序和用戶模式Windows服務組成的軟件。內核驅動程序需要通知服務不同的事件和信息,然後服務將處理這些事件和信息。從內核模式將事件發送到Windows服務

我的問題是:什麼是建立這種溝通的最佳方式?我知道可以使用微過濾器和FilterGetMessage()從內核獲取消息,但這需要輪詢內核以獲取新數據。當需要處理新數據時,我需要一個讓內核通知服務的系統。

作爲一個側面說明,本身使用的生產消費模式,所以會有專門只從內核中獲取數據,並把成隊列另一組工作線程來處理一個線程的服務。任何關於這種設計的想法也是受歡迎的。

回答

2

爲什麼不在服務端使用ReadFile或DeviceIoControl?駕駛員側簡單的IRP,當你需要報告時完成它。該服務需要啓動線程或使用I/O完成回調。並且CancelIo在服務退出時取消阻止呼叫。

+0

是否可以使用在服務端的ReadFile的方法來提供做的事情,如果內核驅動程序有新的數據的回調方式,或一個人必須要不斷地輪詢新的信息? – 2010-09-13 16:24:50

+0

ReadFile()調用將會阻塞,直到驅動程序有可用的東西。不需要投票。 – 2010-09-13 16:38:42

+0

哦對。好點子。 – 2010-09-13 17:13:01