次の方法で共有


DXGK_FIRMWARE_TABLE_INTERFACE構造体 (dispmprt.h)

ユーザー モード ディスプレイ ドライバーがシステム ファームウェア テーブルの読み取りと列挙に使用できる関数が含まれています。 これらの関数は、Microsoft DirectX グラフィックス カーネル サブシステムによって提供され、WDDM 1.2 以降のユーザー モード ディスプレイ ドライバーによって呼び出すことができます。

構文

typedef struct _DXGK_FIRMWARE_TABLE_INTERFACE {
  USHORT                 Size;
  USHORT                 Version;
  PVOID                  Context;
  PINTERFACE_REFERENCE   InterfaceReference;
  PINTERFACE_DEREFERENCE InterfaceDereference;
  NTSTATUS(VOID *Context,ULONG ProviderSignature,ULONG BufferSize,VOID *Buffer,ULONG *RequiredSize)              * )(EnumSystemFirmwareTables;
  NTSTATUS(VOID *Context,ULONG ProviderSignature,ULONG TableId,ULONG BufferSize,VOID *Buffer,ULONG *RequiredSize)              * )(ReadSystemFirmwareTable;
} DXGK_FIRMWARE_TABLE_INTERFACE, *PDXGK_FIRMWARE_TABLE_INTERFACE;

メンバーズ

Size

この構造体のサイズ (バイト単位)。

Version

システム ファームウェア テーブル インターフェイスのバージョン番号。 バージョン番号定数は Dispmprt.h で定義されます (たとえば、DXGK_FIRMWARE_TABLE_INTERFACE_VERSION_1)。

Context

ディスプレイ ポート ドライバーによって提供されるコンテキストへのポインター。

InterfaceReference

ディスプレイ ポート ドライバーによって実装されるインターフェイス参照関数へのポインター。

InterfaceDereference

表示ポート ドライバーによって実装されるインターフェイス逆参照関数へのポインター。

EnumSystemFirmwareTables

システム ファームウェア テーブルを列挙します。 すべての入力パラメーターは、ディスプレイ ミニポート ドライバーによって提供されます。

構文:

NTSTATUS EnumSystemFirmwareTables(
  _In_      VOID  *Context,
  _In_      ULONG ProviderSignature,
  _In_      ULONG TableId,
  _In_      ULONG BufferSize,
  _Out_opt_ VOID  *Buffer,
  _Out_     ULONG *RequiredSize
);

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

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

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

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

文脈

ディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドル。 ディスプレイ ミニポート ドライバーの DxgkDdiAddDevice 関数は、以前に DirectX グラフィックス カーネル サブシステムにこのハンドルを提供しました。

ProviderSignature

クエリの転送先となるファームウェア テーブル プロバイダーの識別子。 このパラメーターには、次のいずれかの値を指定できます。

値の 意味
"ACPI" する ACPI ファームウェア テーブル プロバイダー。
'FIRM' する 生のファームウェア テーブル プロバイダー。
'RSMB' 生の SMBIOS ファームウェア テーブル プロバイダー。

TableId

ファームウェア テーブルの識別子。 この識別子はリトル エンディアン形式であるため、文字列内の文字を逆にする必要があります。

たとえば、FACP は ACPI プロバイダーであり、ACPI 仕様DESCRIPTION_HEADER 構造体の Signature メンバーで説明されています。 そのため、次の例に示すように、'PCAF' を使用して FACP テーブルを指定します。

retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);

BufferSize

Buffer パラメーターが指すバッファーのサイズ (バイト単位)。

バッファ

ファームウェア テーブルの一覧を受け取るバッファーへの省略可能なポインター。 このパラメーターが NULL 場合、戻り値は必要なバッファー サイズです。

このバッファーの内容の詳細については、「解説」セクションを参照してください。

RequiredSize

オペレーティング システムが列挙要求を処理するために必要なバッファー (バイト単位)指すバッファーの最小サイズを受け取る値へのポインター。

ReadSystemFirmwareTable

システム ファームウェア テーブルを読み取ります。 すべての入力パラメーターは、ディスプレイ ミニポート ドライバーによって提供されます。

NTSTATUS ReadSystemFirmwareTable(
  _In_      VOID  *Context,
  _In_      ULONG ProviderSignature,
  _In_      ULONG TableId,
  _In_      ULONG BufferSize,
  _Out_opt_ VOID  *Buffer,
  _Out_     ULONG *RequiredSize
);

生の SMBIOS テーブル プロバイダー ('RSMB') は、生の SMBIOS ファームウェア テーブルの内容を取得します。 Buffer パラメーターが指すバッファーは、次のデータを受け取ります。

#include <windows.h>

struct RawSMBIOSData
{
    BYTE    Used20CallingMethod;
    BYTE    SMBIOSMajorVersion;
    BYTE    SMBIOSMinorVersion;
    BYTE    DmiRevision;
    DWORD    Length;
    BYTE    SMBIOSTableData[];
};

生のファームウェア テーブル プロバイダー ('FIRM') は、指定された物理アドレス範囲の内容を取得します。 ReadSystemFirmwareTable はアドレス範囲のサイズを返します。

ACPI テーブル プロバイダー ('ACPI') は、指定した ACPI テーブルの内容を取得します。 OEM は ACPI 仕様に記載されていない ACPI ファームウェア テーブルを含めることができるため、まず EnumSystemFirmwareTables 関数を呼び出して、システム上にあるすべての ACPI テーブルを列挙する必要があります。

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

文脈

ディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドル。 ディスプレイ ミニポート ドライバーの DxgkDdiAddDevice 関数は、以前に DirectX グラフィックス カーネル サブシステムにこのハンドルを提供しました。

ProviderSignature

クエリの転送先となるファームウェア テーブル プロバイダーの識別子。 このパラメーターには、次のいずれかの値を指定できます。

値の 意味
"ACPI" する ACPI ファームウェア テーブル プロバイダー。
'FIRM' する 生のファームウェア テーブル プロバイダー。
'RSMB' 生の SMBIOS ファームウェア テーブル プロバイダー。

TableId

ファームウェア テーブルの識別子。 この識別子はリトル エンディアン形式であるため、文字列内の文字を逆にする必要があります。

たとえば、FACP は ACPI プロバイダーであり、ACPI 仕様DESCRIPTION_HEADER 構造体の Signature メンバーで説明されています。 そのため、次の例に示すように、'PCAF' を使用して FACP テーブルを指定します。

retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);

BufferSize

Buffer パラメーターが指すバッファーのサイズ (バイト単位)。

バッファ

要求されたファームウェア テーブルを受け取るバッファーへの省略可能なポインター。 このパラメーターが NULL 場合、戻り値は必要なバッファー サイズです。

このバッファーの内容の詳細については、「解説」セクションを参照してください。

RequiredSize

オペレーティング システムが読み取り要求を処理する必要があるバッファー 指すバッファーの最小サイズをバイト単位で受け取る値へのポインター。

必要条件

要件 価値
サポートされる最小クライアント Windows 8
サポートされる最小サーバー Windows Server 2012
ヘッダー dispmprt.h (Dispmprt.h を含む)

関連項目

EnumSystemFirmwareTables

ReadSystemFirmwareTable