回答
內核驅動程序是針對Windows NT本地API(而不是Win32子系統的API)編寫的程序,以及在內核模式下在底層硬件上執行的程序。這意味着驅動程序需要能夠處理在進程之間切換虛擬內存上下文,並且需要編寫非常穩定的內核驅動程序 - 因爲內核驅動程序以內核模式運行,如果發生崩潰,則會導致整個系統崩潰。內核驅動程序不適用於硬件設備以外的任何設備,因爲它們需要管理訪問權限來安裝或啓動,並且因爲它們移除了內核通常爲程序崩潰提供的安全性 - 即它們自己崩潰而不是整個系統。
長話短說:
- 驅動程序使用本機API,而不是在Win32 API
- 這意味着,司機一般都不會顯示任何UI。
- 驅動程序需要管理內存以及顯式分頁內存 - 使用分頁池和非分頁池等內容。
- 驅動程序需要處理進程上下文切換,而不依賴於哪個進程在運行時碰巧擁有頁表。
- 驅動程序無法由受限用戶安裝到內核中。
- 驅動程序以處理器級別的特權運行。
- 用戶級程序出錯會導致程序進程終止。駕駛員出現故障會導致系統顯示藍屏死機。
- 驅動程序需要處理低級硬件位,如中斷和中斷請求級別(IRQL)。
我可以從本地驅動程序使用Win32 API嗎? WDK中有一個用於獲取進程名稱的示例。我在WinAPI中也是這樣做的。 – userbb 2011-05-15 08:06:49
@userbb:否。驅動程序無法調用Windows子系統 - 它的運行級別低於子系統。 (實際上,通常在Windows子系統啓動之前加載)您可以在Windows程序和Native程序中獲得進程的名稱。在Native程序中,只能使用Native API,而在Windows程序中,您可以使用Native API或Windows API。 – 2011-05-15 08:08:39
@userbb:即,驅動程序必須調用'ZwQueryInformationProcess'才能獲取進程名稱。應用程序可以調用'ZwQueryInformationProcess','NtQueryInformationProcess'或'EnumProcessModules'。 – 2011-05-15 08:11:52
它是以內核模式而不是用戶模式運行的代碼。內核模式代碼可以直接訪問操作系統的內部,硬件等。
總是要編寫內核模式模塊來實現device drivers。
內核驅動程序是「應用程序」的低級實現。
因爲它運行在內核上下文中,所以它可以直接訪問內核API和內存。
例如,內核驅動程序應使用:將文件
- 控制訪問(密碼保護,隱藏)
- 允許訪問非標準的文件系統(如電話分機,reiserfs的,ZFS等)和設備
- 真正的API鉤子
- ...還有許多其他原因
如果你想獲得更多的瞭解,您可以使用您最喜愛的搜索引擎搜索關鍵字「ring0」。
- 1. Windows 7內核驅動程序簽名
- 2. 爲什麼使用libusb需要卸載內核驅動程序?
- 3. 內核驅動程序或用戶空間驅動程序?
- 4. 如何從內部卸載Windows內核模式驅動程序?
- 5. 瞭解Linux內核驅動程序
- 6. HTTP.SYS內核模式驅動程序
- 7. 內核驅動程序簽名
- 8. 限制在linux內核驅動程序
- 9. linux內核字符驅動程序
- 10. Linux I2C內核驅動程序
- 11. 內核驅動程序I2C開發
- 12. Windows內核驅動程序引導\ winlogon完成回調
- 13. 在內核驅動程序中使用Windows過濾平臺
- 14. DebugPrintToFile函數調試Windows上的內核驅動程序
- 15. 如何在Windows中調試內核驅動程序崩潰?
- 16. 爲Windows開發內核補丁或驅動程序?
- 17. Windows內核驅動程序簽名和服務創建
- 18. Windows(64)內核驅動程序和pagable函數
- 19. 什麼是Linux內置驅動程序加載順序?
- 20. 什麼是jTDS驅動程序?
- 21. 什麼是pyspark驅動程序?
- 22. 什麼是測試驅動程序?
- 23. 是什麼在MySQL JDBC驅動程序
- 24. 什麼是Type 4 XA驅動程序?
- 25. 什麼是驅動程序功能?
- 26. 什麼是jdbc驅動程序「org.gjt.mm.mysql.Driver」?
- 27. 驅動程序是什麼意思?
- 28. 什麼是Windows Phone 7/8設備驅動程序模型?
- 29. 什麼是Windows操作系統中的驅動程序堆棧?
- 30. 什麼是在Windows中阻止驅動程序安裝?
請閱讀[內核維基百科條目](http://en.wikipedia.org/wiki/Kernel_(computing))。這應該使差異非常明顯。 – DarkDust 2011-05-15 07:53:45