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 を含む) |