在 KMDF 驱动程序中创建可分页的代码

可分页代码 是在不使用代码时可以写入计算机的分页文件的代码。 你可以使驱动程序的一部分可分页,以减少其加载映像和初始加载时间,并减少使用计算机有限非分页内存池的驱动程序代码量。

为了帮助你确定可分页代码或数据是否适合驱动程序,请执行以下操作:

  1. 标识驱动程序中的可分页部分。

    在需要可分页分区之前,不会将其加载到内存中。 有关如何在驱动程序中创建可分页部分的信息,请参阅 使驱动程序可分页

  2. 确保分页驱动程序代码不会妨碍计算机从低功耗状态快速唤醒的能力。

    驱动程序提供的所有设备对象回调函数均在 IRQL = PASSIVE_LEVEL中调用,这使你可以按照使驱动程序可分页) 中所述,使其代码 可分页 (。

    但是,如果框架在设备离开低功耗状态并返回到其工作 (D0) 状态时调用回调函数,则不应使回调函数的代码可分页。

    如果此类代码可分页,则代码可能会在计算机进入睡眠状态之前写入分页文件。 因此,计算机唤醒速度会变慢,因为无法 (重新加载代码,因此在恢复分页磁盘电源之前,设备无法完全正常运行) 。

    因此, “设备返回到其工作状态 ”主题中列出的回调函数不应是可分页的。

  3. 确定驱动程序是否需要在电源转换期间访问驱动程序外部的可分页数据,例如文件、注册表或分页池。

    有关如何在电源转换期间启用和禁用驱动程序访问可分页数据的功能的信息,请参阅 WdfDeviceInitSetPowerPageableWdfDeviceInitSetPowerNotPageable

    有关如何确定驱动程序何时处于不可分页状态的信息,请参阅 WdfDevStateIsNP