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 成员中的输入值指示分配的缓冲区不够大,无法包含 Objects 数组,则设置为 STATUS_BUFFER_TOO_SMALL。
ObjectCount
Objects 数组中的元素数。
ObjectBufferSize
Windows 电源管理框架 (PoFx) 为结构后面的 Objects 数组元素分配的缓冲区的大小(以字节为单位)。 如果 ObjectBufferSize 的输入值不足以包含所有 Objects 数组元素,则 PEP 会用所需的大小覆盖输入值,并将 Status 成员设置为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 通知使用。 RequestFlags 和 ObjectBufferSize 成员包含发送通知时由 PoFx 提供的输入值。 如果输入值小于所需的输出缓冲区大小,PEP 可能会用输出值覆盖 ObjectBufferSize 输入值。 Status、ObjectCount 和 Objects 成员包含 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 成员设置为STATUS_BUFFER_TOO_SMALL。 作为响应,PoFx 将分配所需大小的缓冲区,并将第二个 PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE 通知发送到此设备的 PEP。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 10 开始支持。 |
标头 | pep_x.h (包括 Pep_x.h) |