共用方式為


EnumSystemFirmwareTables 函式 (sysinfoapi.h)

列舉指定型別的所有系統韌體數據表。

語法

UINT EnumSystemFirmwareTables(
  [in]  DWORD FirmwareTableProviderSignature,
  [out] PVOID pFirmwareTableEnumBuffer,
  [in]  DWORD BufferSize
);

參數

[in] FirmwareTableProviderSignature

要導向查詢之韌體數據表提供者的標識符。 此參數可以是下列其中一個值。

意義
'ACPI' ACPI 韌體數據表提供者。
'FIRM' 原始韌體數據表提供者。 UEFI 系統不支援;請改用 『RSMB』。
'RSMB' 原始SMBIOS韌體資料表提供者。

[out] pFirmwareTableEnumBuffer

接收韌體數據表清單之緩衝區的指標。 如果此參數為 NULL,則傳回值是所需的緩衝區大小。

如需此緩衝區內容的詳細資訊,請參閱一節。

[in] BufferSize

pFirmwareTableBuffer 緩衝區的大小,以位元組為單位。

傳回值

如果函式成功,則傳回值是寫入緩衝區的位元元組數目。 此值一律小於或等於 BufferSize

如果函式因為緩衝區不夠大而失敗,則傳回值是所需的緩衝區大小,以位元組為單位。 此值一律大於 BufferSize

如果函式因任何其他原因而失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

從 Windows 10 版本 1803 開始,通用 Windows app 可以宣告應用程式指令清單中的 smbios 受限制功能,以存取系統管理 BIOS (SMBIOS) 資訊。 如需詳細資訊,請參閱 從通用 Windows App 存取 SMBIOS 資訊 。 只有原始SMBIOS (RSMB) 韌體資料表才能從通用 Windows 應用程式存取。

自 Windows Server 2003 Service Pack 1 (SP1) 起,應用程式無法存取 \Device\PhysicalMemory 物件。 此物件的存取僅限於內核模式驅動程式。 這項變更會影響應用程式讀取系統管理 BIOS (SMBIOS) 或其他儲存在物理記憶體最低 1MB 的 BIOS 數據。 應用程式有下列替代方案,可從低物理記憶體讀取數據:

  • 使用 WMI 擷取 SMBIOS 屬性。 許多個別屬性都包含在 Win32 類別中。 您也可以使用 MSSMBios_RawSMBiosTables 類別,擷取單一緩衝區中的原始 SMBIOS 數據。
  • 使用 GetSystemFirmwareTable 函式來讀取原始 SMBIOS 韌體數據表。
應用程式無法寫入低物理記憶體。

原始SMBIOS資料表提供者 (『RSMB』) 目前會傳回單一數據表標識碼,0x0000。 這會對應至原始SMBIOS韌體數據表。

原始韌體數據表提供者 (『FIRM』) 會傳回 DWORD 資料表標識碼的清單。 每個標識碼都會對應到實體位址範圍的開頭。 目前,此提供者會傳回 『C0000』 和 『E0000』。 這些值分別對應到0xC0000到0xDFFFF的實體記憶體,以及分別對應至0xFFFFF 0xE0000。

ACPI 資料表提供者 (『ACPI』) 會傳回 DWORD 資料表標識碼的清單。 每個傳回的標識碼都會對應至目前位於系統 ACPI 命名空間中 ACPI 數據表之DESCRIPTION_HEADER結構的 [簽章] 字段。

針對 ACPI,如果系統包含多個具有相同名稱的數據表,則會以 EnumSystemFirmwareTables 列舉它們。 不過, GetSystemFirmwareTable 只會擷取清單中具有此名稱的第一個數據表。

規格需求

需求
最低支援的用戶端 Windows Vista、Windows XP Professional x64 Edition [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008、Windows Server 2003 SP1 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 sysinfoapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

從通用 Windows 應用程式存取 SMBIOS 資訊

GetSystemFirmwareTable

系統資訊函式