CallNtPowerInformation 函数 (powerbase.h)

设置或检索电源信息。

语法

NTSTATUS CallNtPowerInformation(
  [in]  POWER_INFORMATION_LEVEL InformationLevel,
  [in]  PVOID                   InputBuffer,
  [in]  ULONG                   InputBufferLength,
  [out] PVOID                   OutputBuffer,
  [in]  ULONG                   OutputBufferLength
);

参数

[in] InformationLevel

请求的信息级别。 此值指示要设置或检索的特定电源信息。 此参数必须是以下 POWER_INFORMATION_LEVEL 枚举类型值之一。

含义
AdministratorPowerPolicy
9
不支持此信息级别。
LastSleepTime
15
lpInBuffer 参数必须为 NULL;否则,函数返回ERROR_INVALID_PARAMETER

lpOutputBuffer 缓冲区接收 ULONGLONG,该 ULONGLONG 指定上次系统睡眠时间的中断时间计数(以 100 纳秒为单位)。

LastWakeTime
14
lpInBuffer 参数必须为 NULL;否则,函数返回ERROR_INVALID_PARAMETER

lpOutputBuffer 缓冲区接收 ULONGLONG,该 ULONGLONG 指定上次系统唤醒时中断时间计数(以 100 纳秒为单位)。

ProcessorInformation
11
lpInBuffer 参数必须为 NULL;否则,函数返回ERROR_INVALID_PARAMETER

对于安装在系统上的每个处理器, lpOutputBuffer 缓冲区接收一个 PROCESSOR_POWER_INFORMATION 结构。 使用 GetSystemInfo 函数检索处理器数。

ProcessorPowerPolicyAc
18
不支持此信息级别。
ProcessorPowerPolicyCurrent
22
不支持此信息级别。
ProcessorPowerPolicyDc
19
不支持此信息级别。
SystemBatteryState
5
lpInBuffer 参数必须为 NULL;否则,函数返回ERROR_INVALID_PARAMETER

lpOutputBuffer 缓冲区接收包含有关当前系统电池信息的SYSTEM_BATTERY_STATE结构

SystemExecutionState
16
lpInBuffer 参数必须为 NULL;否则,函数返回ERROR_INVALID_PARAMETER

lpOutputBuffer 缓冲区接收包含系统执行状态缓冲区的 ULONG 值。 此值可以包含以下值的任意组合: ES_SYSTEM_REQUIREDES_DISPLAY_REQUIREDES_USER_PRESENT。 有关详细信息,请参阅 SetThreadExecutionState 函数。

SystemPowerCapabilities
4
lpInBuffer 参数必须为 NULL,否则函数返回ERROR_INVALID_PARAMETER

lpOutputBuffer 缓冲区接收包含当前系统电源功能的SYSTEM_POWER_CAPABILITIES结构。

此信息表示当前支持的电源功能。 在系统中安装驱动程序时,它可能会更改。 例如,安装不支持电源管理的旧设备驱动程序会禁用所有系统睡眠状态。

SystemPowerInformation
12
lpInBuffer 参数必须为 NULL;否则,函数返回ERROR_INVALID_PARAMETER

lpOutputBuffer 缓冲区接收SYSTEM_POWER_INFORMATION结构。

应用程序可以使用此级别来检索有关系统空闲性的信息。

SystemPowerPolicyAc
0
如果 lpInBuffer 不为 NULL,则该函数会将 lpInBuffer 中传递的SYSTEM_POWER_POLICY值应用于在系统在 AC (实用工具) 电源上运行时使用的当前系统电源策略。

lpOutputBuffer 缓冲区接收一个SYSTEM_POWER_POLICY结构,其中包含系统在交流 (实用工具上运行时使用的当前系统电源策略) 电源。

SystemPowerPolicyCurrent
8
lpInBuffer 参数必须为 NULL;否则,函数返回ERROR_INVALID_PARAMETER

lpOutputBuffer 缓冲区接收一个SYSTEM_POWER_POLICY结构,其中包含系统在交流 (实用工具上运行时使用的当前系统电源策略) 电源。

SystemPowerPolicyDc
1
如果 lpInBuffer 不为 NULL,则该函数会将 lpInBuffer 中传递的SYSTEM_POWER_POLICY值应用于系统使用电池电源运行时使用的当前系统电源策略。

lpOutputBuffer 缓冲区接收一个SYSTEM_POWER_POLICY结构,其中包含系统使用电池电源运行时使用的当前系统电源策略。

SystemReserveHiberFile
10
如果 lpInBuffer 不是 NULL 且当前用户具有足够的权限,则函数将提交或取消提交在启动卷上保存休眠映像所需的存储。

lpInBuffer 参数必须指向指示所需请求的 BOOLEAN 值。 如果值为 TRUE,则保留休眠文件;如果值为 FALSE,则删除休眠文件。

VerifyProcessorPowerPolicyAc
20
不支持此信息级别。
VerifyProcessorPowerPolicyDc
21
不支持此信息级别。
VerifySystemPolicyAc
2
不支持此信息级别。
VerifySystemPolicyDc
3
不支持此信息级别。

[in] InputBuffer

指向可选输入缓冲区的指针。 此缓冲区的数据类型取决于 InformationLevel 参数中请求的信息级别。

[in] InputBufferLength

输入缓冲区的大小(以字节为单位)。

[out] OutputBuffer

指向可选输出缓冲区的指针。 此缓冲区的数据类型取决于 InformationLevel 参数中请求的信息级别。 如果缓冲区太小而无法包含信息,则函数将返回STATUS_BUFFER_TOO_SMALL。

[in] OutputBufferLength

输出缓冲区的大小(以字节为单位)。 根据请求的信息级别,这可能是一个大小可变的缓冲区。

返回值

如果函数成功,则返回值 STATUS_SUCCESS

如果函数失败,则返回值可以是以下状态代码之一。

状态 含义
STATUS_BUFFER_TOO_SMALL
输出缓冲区的大小不足以包含要返回的数据。
STATUS_ACCESS_DENIED
调用方没有足够的访问权限来执行请求的操作。

注解

使用 CallNtPowerInformation 对当前系统电源策略所做的更改是即时的,但它们不是永久性的;也就是说,更改不会存储为电源方案的一部分。 使用 CallNtPowerInformation 对系统电源策略所做的任何更改都可能被用户在电源选项控制面板程序中对策略方案的更改覆盖,或者后续调用 WritePwrSchemeSetActivePwrScheme 或其他电源方案函数。

有关使用 PowrProf.h 的详细信息,请参阅 电源方案

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 powerbase.h
Library PowrProf.lib
DLL PowrProf.dll

另请参阅

ADMINISTRATOR_POWER_POLICY

PROCESSOR_POWER_INFORMATION

PROCESSOR_POWER_POLICY

电源管理功能

SYSTEM_BATTERY_STATE 结构

SYSTEM_POWER_CAPABILITIES

SYSTEM_POWER_INFORMATION

SYSTEM_POWER_POLICY