WdfDeviceInitSetPowerNotPageable 函数 (wdfdevice.h)
[仅适用于 KMDF]
WdfDeviceInitSetPowerNotPageable 方法通知电源管理器,当系统在睡眠状态与工作 (S0) 状态之间转换时,驱动程序将无法访问可分页数据。
语法
void WdfDeviceInitSetPowerNotPageable(
[in] PWDFDEVICE_INIT DeviceInit
);
参数
[in] DeviceInit
调用方提供的指向 WDFDEVICE_INIT 结构的指针。
返回值
无
备注
如果函数驱动程序或总线驱动程序调用 WdfDeviceInitSetPowerNotPageable,则当驱动程序的设备 进入低功耗 状态或返回到工作状态时,系统分页文件的设备可能未处于其工作 (D0) 状态。 因此,在设备的电源转换期间,驱动程序不得执行可能导致操作系统访问分页文件的任何操作。 此类操作包括访问文件、注册表或分页池。
默认情况下,框架允许访问函数驱动程序的可分页数据。 框架对总线驱动程序枚举的每个子设备使用父设备的设置,除非总线驱动程序为子设备调用 WdfDeviceInitSetPowerPageable 或 WdfDeviceInitSetPowerNotPageable 。 如果为子设备编写调用 WdfDeviceInitSetPowerPageable 的总线驱动程序,则子设备的堆栈中没有任何驱动程序可以调用 WdfDeviceInitSetPowerNotPageable。
从筛选器驱动程序调用 WdfDeviceInitSetPowerPageable 或 WdfDeviceInitSetPowerNotPageable 不起作用。 框架使用下一个较低级别的驱动程序指定的设置。
大多数驱动程序不需要调用 WdfDeviceInitSetPowerPageable 或 WdfDeviceInitSetPowerNotPageable。 相反,应让框架使用适合驱动程序的默认设置。 但是,如果驱动程序是驱动程序堆栈的一部分,该堆栈在电源转换期间不得访问可分页数据,例如存储堆栈或视频堆栈 () ,或者驱动程序是枚举可能是存储或视频设备的总线驱动程序,则驱动程序应调用 WdfDeviceInitSetPowerNotPageable 。
如果驱动程序调用 WdfDeviceInitSetPowerNotPageable,则必须在调用 WdfDeviceCreate 之前执行此操作。
有关调用 WdfDeviceCreate 的详细信息,请参阅 创建框架设备对象。
示例
下面的代码示例通知电源管理器,当系统在睡眠状态与工作 (S0) 状态之间转换时,驱动程序将无法访问可分页数据。
WdfDeviceInitSetPowerNotPageable(DeviceInit);
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
标头 | wdfdevice.h (包括 Wdf.h) |
Library | Wdf01000.sys (请参阅框架库版本控制.) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | ChildDeviceInitAPI (kmdf) 、 DeviceInitAPI (kmdf) 、 DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、KmdfIrqlExplicit (kmdf) 、 PdoDeviceInitAPI (kmdf) |