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 の