DXGK_FIRMWARE_TABLE_INTERFACE结构(dispmprt.h)
包含用户模式显示驱动程序可用于读取和枚举系统固件表的函数。 这些函数由 Microsoft DirectX 图形内核子系统提供,可由 WDDM 1.2 和更高版本的用户模式显示驱动程序调用。
语法
typedef struct _DXGK_FIRMWARE_TABLE_INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
NTSTATUS(VOID *Context,ULONG ProviderSignature,ULONG BufferSize,VOID *Buffer,ULONG *RequiredSize) * )(EnumSystemFirmwareTables;
NTSTATUS(VOID *Context,ULONG ProviderSignature,ULONG TableId,ULONG BufferSize,VOID *Buffer,ULONG *RequiredSize) * )(ReadSystemFirmwareTable;
} DXGK_FIRMWARE_TABLE_INTERFACE, *PDXGK_FIRMWARE_TABLE_INTERFACE;
成员
Size
此结构的大小(以字节为单位)。
Version
系统固件表接口的版本号。 版本号常量在 Dispmprt.h 中定义(例如,DXGK_FIRMWARE_TABLE_INTERFACE_VERSION_1)。
Context
指向显示端口驱动程序提供的上下文的指针。
InterfaceReference
指向由显示端口驱动程序实现的接口引用函数的指针。
InterfaceDereference
指向由显示端口驱动程序实现的接口取消引用函数的指针。
EnumSystemFirmwareTables
枚举系统固件表。 所有输入参数都由显示微型端口驱动程序提供。
语法:
NTSTATUS EnumSystemFirmwareTables(
_In_ VOID *Context,
_In_ ULONG ProviderSignature,
_In_ ULONG TableId,
_In_ ULONG BufferSize,
_Out_opt_ VOID *Buffer,
_Out_ ULONG *RequiredSize
);
原始 SMBIOS 表提供程序('RSMB')当前返回单个表标识符,0x0000。 这对应于原始 SMBIOS 固件表。
原始固件表提供程序('FIRM')返回 DWORD 表标识符的列表。 每个标识符对应于物理地址范围的开头。 目前,此提供程序返回“C0000”和“E0000”。 这些值分别对应于从0xC0000到0xDFFFF的物理内存,分别对应于0xFFFFF 0xE0000。
ACPI 表提供程序(“ACPI”)返回 DWORD 表标识符的列表。 返回的每个标识符对应于系统 ACPI 命名空间中当前 ACPI 命名空间中 ACPI 表 DESCRIPTION_HEADER 结构的 签名 成员。
对于 ACPI,如果系统包含多个具有相同名称的表,则它们都使用 EnumSystemFirmwareTable 进行枚举。 但是,ReadSystemFirmwareTable 仅检索列表中具有此名称的第一个表。
上下文
与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序的 DxgkDdiAddDevice 函数以前向 DirectX 图形内核子系统提供了此句柄。
ProviderSignature
要向其定向查询的固件表提供程序的标识符。 此参数可以是下列值之一。
值 | 含义 |
---|---|
“ACPI” | ACPI 固件表提供程序。 |
“公司” | 原始固件表提供程序。 |
“RSMB” | 原始 SMBIOS 固件表提供程序。 |
TableId
固件表的标识符。 此标识符采用 little-endian 格式,因此必须反转字符串中的字符。
例如,FACP 是 ACPI 提供程序,如 ACPI 规范中 DESCRIPTION_HEADER 结构的 签名 成员中所述。 因此,使用“PCAF”指定 FACP 表,如以下示例所示:
retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);
BufferSize
Buffer 参数指向的缓冲区的大小(以字节为单位)。
缓冲区
指向接收固件表列表的缓冲区的可选指针。 如果此参数 NULL,则返回值为所需的缓冲区大小。
有关此缓冲区的内容的详细信息,请参阅“备注”部分。
RequiredSize
指向一个指针,该值接收由 Buffer(以字节为单位)指向的缓冲区的最小大小,作系统需要处理枚举请求。
ReadSystemFirmwareTable
读取系统固件表。 所有输入参数都由显示微型端口驱动程序提供。
NTSTATUS ReadSystemFirmwareTable(
_In_ VOID *Context,
_In_ ULONG ProviderSignature,
_In_ ULONG TableId,
_In_ ULONG BufferSize,
_Out_opt_ VOID *Buffer,
_Out_ ULONG *RequiredSize
);
原始 SMBIOS 表提供程序 ('RSMB')检索原始 SMBIOS 固件表的内容。 Buffer 参数指向的缓冲区接收以下数据:
#include <windows.h>
struct RawSMBIOSData
{
BYTE Used20CallingMethod;
BYTE SMBIOSMajorVersion;
BYTE SMBIOSMinorVersion;
BYTE DmiRevision;
DWORD Length;
BYTE SMBIOSTableData[];
};
原始固件表提供程序('FIRM')检索指定物理地址范围的内容。 ReadSystemFirmwareTable 返回地址范围的大小。
ACPI 表提供程序('ACPI')检索指定 ACPI 表的内容。 由于 OEM 可以包括 ACPI 规范中未列出的 ACPI 固件表,因此应首先调用 EnumSystemFirmwareTables 函数来枚举系统上当前的所有 ACPI 表。
对于 ACPI,如果系统包含多个具有相同名称的表,则它们都使用 EnumSystemFirmwareTable 进行枚举。 但是,ReadSystemFirmwareTable 仅检索列表中具有此名称的第一个表。
上下文
与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序的 DxgkDdiAddDevice 函数以前向 DirectX 图形内核子系统提供了此句柄。
ProviderSignature
要向其定向查询的固件表提供程序的标识符。 此参数可以是下列值之一。
值 | 含义 |
---|---|
“ACPI” | ACPI 固件表提供程序。 |
“公司” | 原始固件表提供程序。 |
“RSMB” | 原始 SMBIOS 固件表提供程序。 |
TableId
固件表的标识符。 此标识符采用 little-endian 格式,因此必须反转字符串中的字符。
例如,FACP 是 ACPI 提供程序,如 ACPI 规范中 DESCRIPTION_HEADER 结构的 签名 成员中所述。 因此,使用“PCAF”指定 FACP 表,如以下示例所示:
retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);
BufferSize
Buffer 参数指向的缓冲区的大小(以字节为单位)。
缓冲区
指向接收所请求固件表的缓冲区的可选指针。 如果此参数 NULL,则返回值为所需的缓冲区大小。
有关此缓冲区的内容的详细信息,请参阅“备注”部分。
RequiredSize
指向一个指针,该值接收由 Buffer(以字节为单位)所指向的缓冲区的最小大小,作系统需要处理读取请求。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8 |
支持的最低服务器 | Windows Server 2012 |
标头 | dispmprt.h (包括 Dispmprt.h) |