用户模式驱动程序和内核模式驱动程序

Windows 驱动程序可在用户模式或内核模式中运行。

  • 内核模式驱动程序将在执行其他应用程序代码(包括受保护的子系统代码)的非特权处理器模式中运行。除非用户模式驱动程序调用 Win32 API(反过来它会调用系统服务),否则将无法获取对系统数据的访问权。

  • 内核模式驱动程序将作为操作系统的执行部分(即支持一个或多个受保护的子系统的基础操作系统组件)运行。

用户模式驱动程序和内核模式驱动程序具有不同的结构、入口点和系统接口。设备是需要用户模式驱动程序还是内核模式驱动程序取决于设备的类型,以及操作系统中为设备提供的支持。

某些设备可在用户模式中完全运行或部分运行。用户模式驱动程序具有不受限制的堆栈空间,它可访问 Win32 API 且更易于调试(使用用户模式调试器)。

例如,打印机驱动程序分为用户界面和呈现组件。用户界面组件将在用户模式中运行,并将调用 Win32 API 以呈现图像。Win32 API 反过来调用呈现组件。在 Windows Vista 中,呈现组件必须在用户模式中运行;但在 Windows XP 和 Windows 2000 中,呈现组件可在内核模式或用户模式中运行。请参见选择用户模式或内核模式。

大多数设备驱动程序将在内核模式中运行。内核模式驱动程序可执行某些受保护的操作,并可访问用户模式驱动程序无法访问的系统结构。不过,随着访问权的增加,调试难度和系统损害几率也随之增大。当代码在特权内核模式环境中运行时,根据设计,操作系统将对数据完整性和请求有效性进行更少的检查。

若要确定您是应开发用户模式驱动程序还是内核模式驱动程序,请参见确定设备特定的驱动程序要求和做出驱动程序设计决策。

你可能感兴趣的:(驱动)