AuxKlibGetSystemFirmwareTable 例程从固件表提供程序检索指定的固件表。
语法
NTSTATUS AuxKlibGetSystemFirmwareTable(
[in] ULONG FirmwareTableProviderSignature,
[in] ULONG FirmwareTableID,
[out, optional] PVOID FirmwareTableBuffer,
[in] ULONG BufferLength,
[out, optional] PULONG ReturnLength
);
参数
[in] FirmwareTableProviderSignature
要向其定向查询的固件表提供程序的标识符。 此参数可以是下列值之一。
价值 | 意义 |
---|---|
“ACPI” | ACPI 固件表提供程序。 |
“FIRM” | 原始固件表提供程序。 |
“RSMB” | 原始 SMBIOS 固件表提供程序。 |
[in] FirmwareTableID
固件表的标识符。 标识符中的字符按小尾顺序排列。
例如,FACP 是 ACPI 提供的表的名称。 FACP 表由表开头 DESCRIPTION_HEADER 结构的 签名 字段中的 4 字节值“PCAF”(0x50434146)标识。 以下代码示例演示如何在 AuxKlibGetSystemFirmwareTable 调用中指定 FACP:
status = AuxKlibGetSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE, &dataSize);
在此示例中,pBuffer
指向调用方分配的缓冲区,BUFSIZE
是此缓冲区的大小(以字节为单位),dataSize
是例程向其写入缓冲区的字节数的变量。 有关 DESCRIPTION_HEADER 结构的详细信息,请参阅 高级配置和 Power Interface 网站上的高级配置和 Power Interface 规范。
[out, optional] FirmwareTableBuffer
指向接收固件表列表的调用方分配缓冲区的指针。 如果此参数为 NULL,则写入 *ReturnLength 的值是所需的缓冲区大小。 有关此缓冲区内容的详细信息,请参阅“备注”部分。
[in] BufferLength
FirmwareTableBuffer指向的缓冲区的大小(以字节为单位)。
[out, optional] ReturnLength
指向例程写入到 FirmwareTableBuffer指向的缓冲区的数据字节数的位置的指针。
返回值
如果调用成功,AuxKlibGetSystemFirmwareTable 返回STATUS_SUCCESS。 可能的返回值包括以下错误代码。
返回代码 | 描述 |
---|---|
|
向例程提供了无效参数。 |
|
调用方分配的缓冲区太小,但所需的缓冲区大小已写入 ReturnLength 输出参数。 |
言论
原始 SMBIOS 表提供程序 ('RSMB')检索原始 SMBIOS 固件表的内容。 写入 FirmwareTableBuffer 缓冲区的数据以以下结构开头:
struct RawSMBIOSData
{
BYTE Used20CallingMethod;
BYTE SMBIOSMajorVersion;
BYTE SMBIOSMinorVersion;
BYTE DmiRevision;
DWORD Length;
BYTE SMBIOSTableData[];
};
原始固件表提供程序('FIRM')检索指定物理地址范围的内容。 写入 *ReturnLength 的值是地址范围的大小。
ACPI 表提供程序('ACPI')检索指定 ACPI 表的内容。 由于 OEM 可以包含 ACPI 规范中未列出的 ACPI 固件表,因此应首先调用 AuxKlibEnumerateSystemFirmwareTables 来枚举系统固件中当前可用的所有 ACPI 表。
对于 ACPI,如果系统固件包含多个具有相同名称的表,AuxKlibEnumerateSystemFirmwareTables 枚举它们。 但是,AuxKlibGetSystemFirmwareTable 仅检索列表中具有此名称的第一个表。
AuxKlibGetSystemFirmwareTable 是 Win32 GetSystemFirmwareTable 函数的内核模式等效项。
驱动程序必须先调用 AuxKlibInitialize,然后才能调用 AuxKlibGetSystemFirmwareTable。
AuxKlibGetSystemFirmwareTable 在适用于 Windows 8 及更高版本的 WDK 中包含的 Aux_klib.h 头文件中定义。 若要使用此例程,驱动程序应链接到适用于 Windows 8 和更高版本的 Windows 的 WDK 中包含的 Aux_klib.lib 版本。 AuxKlibGetSystemFirmwareTable 这些版本的 WDK 的实现可用于从 Windows Vista 开始的 Windows 版本中。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows Vista 开始支持。 |
目标平台 | 普遍 |
标头 | aux_klib.h (include Aux_klib.h) |
库 | Aux_Klib.lib |
IRQL | PASSIVE_LEVEL |