在基于框架的驱动程序中创建可分页的代码

可分页的代码 是指在代码未被使用时能写入计算机的分页文件的代码。您可以将驱动程序的一部分设为可分页,以降低其加载图像和初始化加载的时间,以及减少驱动程序使用计算机有限的非分页内存池的代码量。

要帮助确定可分页代码或数据是否适用于您的驱动程序,请执行以下操作:

  1. 确定驱动程序中的可分页部分。

    除非需要,可分页部分不会加载到内存中。有关如何在驱动程序中创建可分页部分的信息,请参见有关对驱动程序进行分页处理的文章。

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

    驱动程序提供的所有设备对象回调函数都在 IRQL = PASSIVE_LEVEL 处进行调用,这样您就可以对它们的代码进行分页处理(如对驱动程序进行分页处理中所述)。

    但是,如果在设备退出低功耗状态返回其工作 (D0) 状态时框架调用回调函数,那么不应使该回调函数的代码为可分页代码。

    如果此代码可分页,那么它会在计算机进入睡眠状态之前写入分页文件。从而使得计算机需要更长时间来唤醒,因为代码在分页磁盘的动力还原之前无法重新加载,因此也就无法对计算机进行完全操作。

    所以,设备返回其工作状态主题中所列出的回调函数都不应分页。

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

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

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

 

 

社区附加资源

添加
显示:
© 2015 Microsoft