IOCTL_PMI_GET_CAPABILITIES IOCTL (pmi.h)

IOCTL_PMI_GET_CAPABILITIES请求获取有关功率计的功能和资产信息。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

I/O 请求数据包的 AssociatedIrp.SystemBuffer 成员 (IRP) 指向发起方分配的缓冲区,该缓冲区用作请求的输入缓冲区和输出缓冲区。 输入时,此缓冲区包含一个 PMI_CAPABILITIES 结构,其中 VersionCapabilityType 成员设置为有效值。 CapabilitiesType 成员包含一个 PMI_CAPABILITIES_TYPE 枚举值,该值指定要从功率计检索的 PMI 功能信息的类型。 此值还确定包含此信息所需的输出缓冲区的大小。

输入缓冲区长度

IRP 当前 I/O 堆栈位置 (IO_STACK_LOCATION) 的 Parameters.DeviceIoControl.InputBufferLength 成员设置为 AssociatedIrp.SystemBuffer 成员指向的缓冲区的大小(以字节为单位)。 此大小必须大于或等于 sizeof (PMI_CAPABILITIES) ,否则请求将失败并出现错误状态STATUS_INVALID_PARAMETER。

输出缓冲区

如果请求成功完成, 则 AssociatedIrp.SystemBuffer 成员指向的缓冲区将包含请求的 PMI 功能信息。 位于此缓冲区的开头是 一个PMI_CAPABILITIES 结构,用于指示缓冲区中信息的类型和大小。

输出缓冲区长度

IRP 当前 I/O 堆栈位置的 Parameters.DeviceIoControl.OutputBufferLength 成员设置为 AssociatedIrp.SystemBuffer 成员指向的缓冲区的大小(以字节为单位)。 要使请求成功,此大小必须足够大,以包含 由PMI_CAPABILITIES_TYPE 输入参数值指定的 PMI 功能信息。 否则,请求将失败,STATUS_BUFFER_TOO_SMALL错误状态。

状态块

Information 成员设置为PMI_CAPABILITIES结构及其可变长度数据的大小(以字节为单位)。

Status 成员设置为以下值之一:

STATUS_BUFFER_TOO_SMALL

IRPParameters.DeviceIoControl.OutputBufferLength 成员小于PMI_CAPABILITIES结构及其可变长度数据的大小(以字节为单位)。

STATUS_INVALID_PARAMETER

发起方分配的输入缓冲区包含无效 的PMI_CAPABILITIES_TYPE 值。

STATUS_SUCCESS

支持 PMI 接口的 WDM 驱动程序已成功完成 IOCTL 请求。

注解

IOCTL_PMI_GET_CAPABILITIES请求查询功率计的 PMI 功能或资产信息。 输入 PMI_CAPABILITIES 枚举值指定要返回的功能信息的类型。 输出缓冲区的数据类型和内容因请求的数据而异。

下表描述了为指定的 PMI_CAPABILITIES_TYPE 枚举值返回的数据类型。

PMI_CAPABILITIES_TYPE值 说明
PmiMeteredHardware 指定功率计监视的硬件设备的 PMI_METERED_HARDWARE_INFORMATION 结构。
PmiReportedCapabilities 一个PMI_REPORTED_CAPABILITIES结构,指定功率计支持的 PMI 功能类型。
注意PMI_REPORTED_CAPABILITIES结构长度可变。 如果 IRP) 的 MdlAddress 成员引用的输出缓冲区 (太小,驱动程序必须使此 IOCTL 请求失败。
 

要求

要求
最低受支持的客户端 在 Windows 7、Windows Server 2008 R2 和更高版本的 Windows 操作系统中可用。
标头 pmi.h (包括 Pmi.h)

另请参阅

IO_STACK_LOCATION

IRP

PMI_CAPABILITIES

PMI_CAPABILITIES_TYPE

PMI_METERED_HARDWARE_INFORMATION

PMI_REPORTED_CAPABILITIES