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。 可能的错误返回值包括以下状态代码。

返回代码 说明
STATUS_NOT_IMPLEMENTED
未实现请求的电源控制操作。
STATUS_NOT_SUPPORTED
电源引擎插件 (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

另请参阅

PoFxRegisterDevice

PowerControlCallback