什么是使用 WDK 编写的 Windows 内核驱动程序?
与普通应用程序或服务有什么不同?
内核驱动程序是针对 Windows NT 的本机 API(而不是 Win32 子系统的 API)编写的程序,它们在底层硬件上以内核模式执行。这意味着驱动程序需要能够处理在进程之间切换虚拟内存上下文,并且需要编写得非常稳定——因为内核驱动程序在内核模式下运行,如果一个崩溃,它会导致整个系统崩溃。内核驱动程序不适合硬件设备以外的任何设备,因为它们需要管理权限才能安装或启动,并且因为它们消除了内核通常为崩溃程序提供的安全性——即它们自身崩溃而不是整个系统崩溃。
长话短说:
它是在内核模式而不是用户模式下运行的代码。内核模式代码可以直接访问操作系统、硬件等的内部。
您总是编写内核模式模块来实现设备驱动程序。
内核驱动程序是“应用程序”的低级实现。
因为它在内核上下文中运行,所以它具有直接访问内核 API 和内存的能力。
例如,内核驱动程序应该用于:
如果您想了解更多,可以使用您喜欢的搜索引擎搜索关键字“ring0”。
其他人则将差异解释为系统级别的角度。如果您使用 C++ 进行开发,则用户模式开发和内核模式开发存在以下差异。