我開始深入一些Windows 7驅動程序開發。有一點不清楚的是託管代碼程序如何訪問驅動程序中的信息(例如與數字I/O卡進行通信)。例如,驅動程序(內核或用戶模式)將管理對PCI/PCIe卡上寄存器的訪問,但是必須向編寫託管代碼的程序員提供寄存器數據的讀取/寫入(C#,VB .NET)通過一個.NET類。從託管代碼與設備驅動程序的接口 - 無P/Invoke?
我不想在Win32API調用中使用P/Invoke。
這是一個內存共享(IOCTL)的問題,我使用中間託管DLL來「隱藏」P/Invoke,還是有一些簡單的東西我錯過了?
謝謝!
感謝您的回覆。我對非託管驅動程序代碼的開發很好;就像你所說的那樣,如果沒有p/invoke,就沒有得到「彌合託管和非託管之間的差距」。我一直使用來自第三方供應商的硬件驅動程序,而不必在C#中使用p/invoke。他們是否總是將p/invoke隱藏在一組中間類中? – ddechow 2012-02-21 17:57:00
@ddechow:如果你可以不使用P/Invoke,那麼顯然這些驅動程序供應商已經爲你提供了一些爲你建橋的庫。如果你想知道,給他們打電話,或者在他們提供的任何組件上使用Reflector。恐怕我無法告訴你你的驅動程序供應商是如何做到這一點的,因爲我不知道供應商,驅動程序和libs。 – Abel 2012-02-22 10:50:20