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 本机系统服务例程的两个版本。

对于内核模式驱动程序的调用,NtXxxZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 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)
Ntoskrnl.lib
DLL Ntoskrnl.lib
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI、PowerIrpDDis

另请参阅

POWER_PLATFORM_INFORMATION

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