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 | 调用方没有足够的访问权限来执行请求的操作。 |
注解
NtPowerInformation 和 ZwPowerInformation 是同一 Windows 本机系统服务例程的两个版本。
对于来自内核模式驱动程序的调用,Windows 本机系统服务例程的 NtXxx 和 ZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxx 和 ZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 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 |