poFxPowerControl 函数 (wdm.h)
PoFxPowerControl 例程将电源控制请求发送到电源管理框架 (PoFx) 。
语法
NTSTATUS PoFxPowerControl(
[in] POHANDLE Handle,
[in] LPCGUID PowerControlCode,
[in, optional] PVOID InBuffer,
[in] SIZE_T InBufferSize,
[out, optional] PVOID OutBuffer,
[in] SIZE_T OutBufferSize,
[out, optional] PSIZE_T BytesReturned
);
参数
[in] Handle
表示向 PoFx 注册设备的句柄。 设备驱动程序以前从 PoFxRegisterDevice 例程收到此句柄。
[in] PowerControlCode
指向电源控制代码的指针。 此代码是指定所请求操作的 GUID 值。
[in, optional] InBuffer
指向调用方分配的缓冲区的指针,该缓冲区包含操作的输入数据。 此缓冲区中数据的格式取决于 PowerControlCode 参数指定的电源控制代码。 InBuffer 参数是可选的,如果指定的操作不需要输入数据,则可以指定为 NULL。
[in] InBufferSize
InBuffer 参数指向的输入缓冲区的大小(以字节为单位)。 如果 InBuffer 为 NULL,请将 InBufferSize 设置为零。
[out, optional] OutBuffer
指向调用方分配的缓冲区的指针,该缓冲区包含操作的输出数据。 此缓冲区中数据的格式取决于 PowerControlCode 参数指定的电源控制代码。 OutBuffer 参数是可选的,如果指定的操作不生成任何输出数据,则可以指定为 NULL。
[in] OutBufferSize
OutBuffer 参数指向的输出缓冲区的大小(以字节为单位)。 如果 OutBuffer 为 NULL,请将 OutBufferSize 设置为零。
[out, optional] BytesReturned
指向例程写入到 OutBuffer 指向的缓冲区的数据字节数的位置的指针。 写入的字节数将小于或等于 OutBufferSize。 此参数是可选的,如果调用方不需要知道写入输出缓冲区的字节数,则可以指定为 NULL 。
返回值
如果请求的操作成功,PoFxPowerControl 将返回STATUS_SUCCESS。 可能的错误返回值包括以下状态代码。
返回代码 | 说明 |
---|---|
|
未实现请求的电源控制操作。 |
|
电源引擎插件 (PEP) 不确认对此设备的支持。 |
注解
设备驱动程序调用此例程以将电源控制请求直接发送到 PoFx。 电源控制请求类似于 IOCTL) (I/O 控制请求。 但是,与 IOCTL 不同,电源控制请求直接发送到 PoFx,设备堆栈中的其他设备驱动程序不会观察到该请求。 在 PoFxPowerControl 调用期间,PoFx 同步执行请求的操作。
同样,PoFx 可以直接将电源控制请求发送到设备驱动程序。 驱动程序在其 PowerControlCallback 例程中处理此请求。
PoFx 将所有电源控制请求的处理委托给电源引擎插件 (PEP) 。 PEP 是一个可选软件组件,用于执行特定于芯片 (SoC) 模块上的特定处理器或系统产品系列的电源管理任务。 如果处理器或 SoC 的硬件供应商为硬件平台提供 PEP,则此 PEP 可能会处理来自设备驱动程序的自定义电源控制请求,或者可能会将自定义电源控制请求发送到驱动程序的 PowerControlCallback 例程。 供应商可以指定一组 PowerControlCode GUID,并定义这些 GUID 指定的操作。 作为选项,设备驱动程序可以包含特定于平台的代码,以处理或发送这些操作的请求。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用。 |
目标平台 | 通用 |
标头 | wdm.h |
Library | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |