以前從不開發任何驅動程序。2窗口內核模式驅動程序之間的通信
無論如何,我現在正在編寫2個簡單的windows內核模式驅動程序,並將2個驅動程序安裝到連接到2個不同總線(ISA總線/ PCI總線)的2個不同設備上,並且不知何故2個驅動程序需要通話對方也希望數據交換,有沒有什麼有效的方法來實現這一點?
內核事件可能能夠啓用同步,但數據交換如何?
在用戶模式下,管道/套接字可能是一個選項,但在內核模式下,是否存在命名管道或對象?谷歌表示,有一個爲內核模式管道用法沒有說明的API ...
我不是很熟悉Windows驅動程序框架,希望我做的意義..
的感謝!
+1。請注意(如果您願意),您可以在驅動程序初始化期間使用此機制來交換回調例程地址和上下文指針,然後使用回調例程進行通信。內核驅動程序都加載到相同的地址空間,所以它不像進程間通信;驅動程序A可以直接調用驅動程序B中的函數,也可以直接寫入驅動程序B創建的內存緩衝區中 - 只需知道地址即可。 –
酷!我認爲這正是我正在尋找的。並且您的評論確實有助於清除像我這樣的新手新手的頭腦! @HarryJohnston – Sean
只有一件事,我該如何在驅動程序#1中「打開」#2驅動程序?我試過IoGetDeviceObjectPointer和ObReferenceObjectByName,都失敗了。第一個參數詢問應該看起來像「\\ Device \\ somedevice」或「\\ Driver \\ somedriver」的設備/驅動程序的名稱,我嘗試過使用WdfDeviceInitAssignName來定製我的驅動程序的名稱,但是它又失敗了... – Sean