回答
内核驱动程序是针对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. HTTP.SYS内核模式驱动程序
- 4. 内核驱动程序签名
- 5. 内核驱动程序I2C开发
- 6. Linux I2C内核驱动程序
- 7. Windows内核驱动程序引导\ winlogon完成回调
- 8. 在内核驱动程序中使用Windows过滤平台
- 9. 为Windows开发内核补丁或驱动程序?
- 10. Windows内核驱动程序代码混淆?
- 11. 什么是Linux内置驱动程序加载顺序?
- 12. 驱动程序是什么意思?
- 13. 什么是jdbc驱动程序“org.gjt.mm.mysql.Driver”?
- 14. 什么是pyspark驱动程序?
- 15. 什么是Type 4 XA驱动程序?
- 16. 什么是Windows操作系统中的驱动程序堆栈?
- 17. Google USB Driver是内核模式驱动程序吗?
- 18. 当我们有内核时,为什么我们需要驱动程序?
- 19. 什么时候调用Linux内核驱动程序的探测函数?
- 20. 什么是c#测试驱动程序,为什么执行
- 21. Windows驱动程序创建
- 22. 为什么在用户程序中动态分配缓冲区会导致内核驱动程序崩溃?
- 23. 用户线程(OS Windows)的内核模式堆栈是什么?
- 24. 更改内核驱动程序中内置的驱动程序的初始化顺序?
- 25. 当驱动程序内置驱动程序时,驱动程序不工作
- 26. Windows驱动程序使用什么证书进行签名
- 27. 什么Node.js的MySQL驱动程序在Windows上工作?
- 28. 什么是内核线程调度?
- 29. Linux内核中的驱动程序探测顺序
- 30. 驱动程序开发:卸载Windows驱动程序
请阅读[内核维基百科条目](http://en.wikipedia.org/wiki/Kernel_(computing))。这应该使差异非常明显。 – DarkDust 2011-05-15 07:53:45