AuxKlibGetSystemFirmwareTable 函式 (aux_klib.h)

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。 可能的傳回值包括下列錯誤碼。

傳回碼 Description
STATUS_INVALID_PARAMETER
提供無效的參數給例程。
STATUS_BUFFER_TOO_SMALL
呼叫端配置的緩衝區太小,但必要的緩衝區大小已寫入 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 定義於 Aux_klib.h 頭檔中,其中包含於適用於 Windows 8 和更新版本的 Windows WDK 中。 若要使用此例程,驅動程式應該連結至適用於 Windows 8 和更新版本的 Windows WDK 中所含的 Aux_klib.lib 版本。 這些 WDK 版本中 的 AuxKlibGetSystemFirmwareTable 實作可用於從 Windows Vista 開始的 Windows 版本中。

規格需求

需求
最低支援的用戶端 從 Windows Vista 開始支援。
目標平台 Universal
標頭 aux_klib.h (包含 Aux_klib.h)
程式庫 Aux_Klib.lib
IRQL PASSIVE_LEVEL

另請參閱

AuxKlibEnumerateSystemFirmwareTables

AuxKlibInitialize

GetSystemFirmwareTable