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 より大きくなります。

関数が他の理由で失敗した場合、戻り値は 0 になります。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

バージョン 1803 Windows 10以降、ユニバーサル Windows アプリは、アプリ マニフェストで smbios 制限付き機能を宣言することで、システム管理 BIOS (SMBIOS) 情報にアクセスできます。 詳細については、「 ユニバーサル Windows アプリから SMBIOS 情報にアクセス する」を参照してください。 ユニバーサル Windows アプリからアクセスできるのは、生の SMBIOS (RSMB) ファームウェア テーブルのみです。

Windows Server 2003 Service Pack 1 (SP1) の時点では、アプリケーションは \Device\PhysicalMemory オブジェクトにアクセスできません。 このオブジェクトへのアクセスは、カーネル モード ドライバーに制限されます。 この変更は、システム管理 BIOS (SMBIOS) または物理メモリの最小 1 MB に格納されている他の BIOS データを読み取るアプリケーションに影響します。 アプリケーションには、低い物理メモリからデータを読み取る次の代替手段があります。

  • WMI を使用して SMBIOS プロパティを取得します。 個々のプロパティの多くは Win32 クラスに含まれています。 MSSMBios_RawSMBiosTables クラスを使用して、1 つのバッファー内の生の SMBIOS データを取得することもできます。
  • GetSystemFirmwareTable 関数を使用して、生の SMBIOS ファームウェア テーブルを読み取ります。
アプリケーションが低い物理メモリに書き込む方法はありません。

生の SMBIOS テーブル プロバイダー ('RSMB') は現在、0x0000 1 つのテーブル識別子を返します。 これは、生の SMBIOS ファームウェア テーブルに対応します。

生ファームウェア テーブル プロバイダー ('FIRM') は 、DWORD テーブル識別子の一覧を返します。 各識別子は、物理アドレス範囲の先頭に対応します。 現在、このプロバイダーは 'C0000' と 'E0000' を返します。 これらの値は、0xC0000から0xDFFFF、0xE0000から0xFFFFFまでの物理メモリにそれぞれ対応しています。

ACPI テーブル プロバイダー ('ACPI') は 、DWORD テーブル識別子の一覧を返します。 返される各識別子は、現在システムの ACPI 名前空間にある ACPI テーブルのDESCRIPTION_HEADER構造体の Signature フィールドに対応します。

ACPI の場合、システムに同じ名前の複数のテーブルが含まれている場合は、すべて EnumSystemFirmwareTables で列挙されます。 ただし、 GetSystemFirmwareTable は 、この名前のリスト内の最初のテーブルのみを取得します。

要件

要件
サポートされている最小のクライアント Windows Vista、Windows XP Professional x64 Edition [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008、Windows Server 2003 SP1 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー sysinfoapi.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

ユニバーサル Windows アプリから SMBIOS 情報にアクセスする

GetSystemFirmwareTable

システム情報関数