电脑基础 · 2023年3月13日

驱动开发函数详解之Wdm

驱动开发函数详解之Wdm

前言

  1. IRP(I/O Request Package) == 输入输出请求包
    上层应用程序需要访问底层输入输出设备时,发出I/O请求,系统会把这些请求转化为IRP数据,不同的IRP会启动I/O设备驱动中对应的派遣函数。
  2. #pragma PAGEDCODE 将例程分配在分页内存中

1.PAGED_CODE_LOCKED(Wdm.h)

该宏断言:当前正在运行的代码节可分页,且在运行之前必须已锁定到内存中。
返回:VOID
可分页代码必须遵循某些限制 (如 IRQL < = APC_LEVEL) ,除非已将其锁定到位。
**必须锁定就位才能正常工作的可分页例程**首先应该调用 PAGED_CODE_LOCKED。

2.PAGED_CODE(Wdm.h)

该宏确保:调用方的线程在 IRQL (足够低、允许分页)上运行。

3.锁定可分页代码或数据

许多内核模式的驱动程序没必要一直驻留在内存中,除非打开它们管理的设备;
另一种如:系统代码、应用程序代码或系统分页文件的磁盘的驱动程序必须始终驻留在内存中。
锁定:偶尔使用的设备,在使用时,通过在内存中锁定代码把该部分指定为可分页

  • 将可分页代码隔离到一个命名部分&#x