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') は現在、1 つのテーブル識別子 (0x0000) を返します。 これは、生の SMBIOS ファームウェア テーブルに対応します。

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

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

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

Context

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

ProviderSignature

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

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

TableId

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

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

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

BufferSize

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

バッファー

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

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

RequiredSize

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

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 は、この名前のリスト内の最初のテーブルのみを取得します。

Context

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

ProviderSignature

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

Value 意味
'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
Header dispmprt.h (Dispmprt.h を含む)

こちらもご覧ください

EnumSystemFirmwareTables

ReadSystemFirmwareTable