PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE结构(pep_x.h)

PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE 结构包含设备命名空间中对象的枚举。

语法

typedef struct _PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE {
  PEPHANDLE                      DeviceHandle;
  ULONG                          RequestFlags;
  NTSTATUS                       Status;
  ULONG                          ObjectCount;
  SIZE_T                         ObjectBufferSize;
  PEP_ACPI_OBJECT_NAME_WITH_TYPE Objects[ANYSIZE_ARRAY];
} PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE, *PPEP_ACPI_ENUMERATE_DEVICE_NAMESPACE;

成员

DeviceHandle

一个 PEPHANDLE 值,该值标识设备的 ACPI 服务的注册。 平台扩展插件(PEP)提供了此句柄,以响应以前的 PEP_NOTIFY_ACPI_REGISTER_DEVICE 通知。

RequestFlags

一组输入标志。 当前未为此成员定义任何标志,该成员始终设置为PEP_ACPI_EDN_FLAG_NONE(0x0)。

Status

一个 NTSTATUS 值,该值指示所请求的设备命名空间枚举的状态。 如果 PEP 成功枚举设备命名空间中的对象,请将此成员设置为STATUS_SUCCESS。 如果 ObjectBufferSize 成员中的输入值指示分配的缓冲区不足以包含 对象 数组,则设置为STATUS_BUFFER_TOO_SMALL。

ObjectCount

对象 数组中的元素数。

ObjectBufferSize

Windows 电源管理框架(PoFx)为 对象分配的缓冲区的大小(以字节为单位), 结构后面的数组元素。 如果 ObjectBufferSize 的输入值不够大,无法包含所有 对象 数组元素,则 PEP 会用所需的大小覆盖输入值,并将 状态 成员设置为STATUS_BUFFER_TOO_SMALL。 有关详细信息,请参阅 备注

Objects[ANYSIZE_ARRAY]

PEP_ACPI_OBJECT_NAME_WITH_TYPE 结构数组中的第一个元素,用于描述设备的 ACPI 命名空间中的对象。 如果此数组包含多个元素,则其他数组元素遵循 PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE 结构的末尾。

言论

此结构由 PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE 通知使用。 RequestFlagsObjectBufferSize 成员包含发送通知时 PoFx 提供的输入值。 如果输入值小于所需的输出缓冲区大小,PEP 可能会覆盖 ObjectBufferSize 输入值。 StatusObjectCountObjects 成员包含 PEP 写入到结构的输出值。

ObjectCount 是此设备下 ACPI 命名空间中列出的对象数。 PEP 应验证 PoFx 为 Objects 数组分配的存储是否足够大,以包含 ObjectCount 数组元素。 如果 ObjectCount > 1,则附加的 ObjectCount–1 数组元素遵循 PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE 结构的末尾。 包含结构和附加数组元素所需的缓冲区大小计算如下:

sizeof(PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE) + ((ObjectCount-1) * sizeof(PEP_ACPI_OBJECT_NAME_WITH_TYPE));

如果 ObjectBufferSize 成员中指定的输入值小于所需大小,PEP 将覆盖 ObjectBufferSize 输入值,并将 状态 成员设置为STATUS_BUFFER_TOO_SMALL。 作为响应,PoFx 将分配所需大小的缓冲区,并向此设备的 PEP 发送第二个 PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE 通知。

要求

要求 价值
最低支持的客户端 从 Windows 10 开始支持。
标头 pep_x.h (包括 Pep_x.h)

另请参阅