ntPowerInformation 函数 (wdm.h)

NtPowerInformation 例程设置或检索系统电源信息。

语法

__kernel_entry NTSYSCALLAPI NTSTATUS NtPowerInformation(
  [in]            POWER_INFORMATION_LEVEL InformationLevel,
  [in, optional]  PVOID                   InputBuffer,
  [in]            ULONG                   InputBufferLength,
  [out, optional] PVOID                   OutputBuffer,
  [in]            ULONG                   OutputBufferLength
);

参数

[in] InformationLevel

指定请求的信息级别,指示要设置或检索的特定电源信息。 目前,唯一受支持的 POWER_INFORMATION_LEVEL 值为 PlatformInformation

说明
PlatformInformation 信息表示系统当前支持的电源功能。 安装驱动程序后,信息可能会更改。 例如,安装不支持电源管理的旧设备驱动程序可能会修改系统的功能。

[in, optional] InputBuffer

指向调用方分配的输入缓冲区的指针。 此参数必须为 NULL,否则返回 ERROR_INVALID_PARAMETER

[in] InputBufferLength

InputBuffer 中缓冲区的大小(以字节为单位)。 参数必须设置为零。

[out, optional] OutputBuffer

指向输出缓冲区的指针。 此缓冲区的数据类型取决于 InformationLevel 参数中请求的信息级别。 对于 PlatformInformation 级别,当前唯一支持的值 OutputBuffer 参数是必需的,并且应为 POWER_PLATFORM_INFORMATION 类型。

[in] OutputBufferLength

输出缓冲区的大小(以字节为单位)。 根据请求的信息级别,缓冲区的大小可能会有所不同。 PlatformInformation(当前唯一支持的值)需要一个缓冲区,该缓冲区的大小与 POWER_PLATFORM_INFORMATION 结构的大小。

返回值

如果调用成功,则返回STATUS_SUCCESS。 如果调用失败,可能的错误代码包括:

返回代码 说明
STATUS_BUFFER_TOO_SMALL 输出缓冲区的大小不足,无法包含返回的数据。
STATUS_INVALID_PARAMETER PlatformInformation 信息级别是当前唯一支持的值,它不需要输入缓冲区,并且必须包含输出缓冲区。 调用方提供了输入缓冲区或没有输出缓冲区。
STATUS_ACCESS_DENIED 调用方没有足够的访问权限来执行请求的操作。

注解

NtPowerInformationZwPowerInformation 是同一 Windows 本机系统服务例程的两个版本。

对于来自内核模式驱动程序的调用,Windows 本机系统服务例程的 NtXxxZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxxZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本

示例

此示例演示了有效的函数调用。

POWER_PLATFORM_INFORMATION PlatformInfo = {0};
NTSTATUS Result = NtPowerInformation(PlatformInformation, NULL, 0, &PlatformInfo, sizeof(PlatformInfo));

要求

要求
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
目标平台 通用
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntpoapi.h)
Library Ntoskrnl.lib
DLL Ntoskrnl.lib
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI,PowerIrpDDis

另请参阅

POWER_PLATFORM_INFORMATION

使用本机系统服务例程的 Nt 和 Zw 版本