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。 可能的傳回值包括下列錯誤碼。
傳回碼 | 描述 |
---|---|
|
已將無效的參數提供給例程。 |
|
呼叫端配置的緩衝區太小,但所需的緩衝區大小已寫入 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 (包括 Aux_klib.h) |
連結庫 | Aux_Klib.lib |
IRQL | PASSIVE_LEVEL |