DXGK_FIRMWARE_TABLE_INTERFACE-Struktur (dispmprt.h)

Enthält Funktionen, mit denen Benutzermodus-Anzeigetreiber die Systemfirmwaretabelle lesen und auflisten können. Diese Funktionen werden vom Microsoft DirectX-Grafikkernsystem bereitgestellt und können von WDDM 1.2 und höheren Benutzermodus-Anzeigetreibern aufgerufen werden.

Syntax

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;

Member

Size

Die Größe (in Bytes) dieser Struktur.

Version

Die Versionsnummer der Schnittstelle "Systemfirmwaretabelle". Versionsnummernkonstanten werden in Dispmprt.h definiert (z. B. DXGK_FIRMWARE_TABLE_INTERFACE_VERSION_1).

Context

Ein Zeiger auf einen Kontext, der vom Anzeigeporttreiber bereitgestellt wird.

InterfaceReference

Ein Zeiger auf eine Schnittstellenverweisfunktion, die vom Anzeigeporttreiber implementiert wird.

InterfaceDereference

Ein Zeiger auf eine Schnittstellendereferenzierungsfunktion, die vom Anzeigeporttreiber implementiert wird.

EnumSystemFirmwareTables

Listet die Systemfirmwaretabelle auf. Alle Eingabeparameter werden vom Anzeigeminiporttreiber bereitgestellt.

Syntax:

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

Der RAW-SMBIOS-Tabellenanbieter ("RSMB") gibt derzeit einen einzelnen Tabellenbezeichner zurück, 0x0000. Dies entspricht der unformatierten SMBIOS-Firmwaretabelle.

Der Unformatierte Firmwaretabellenanbieter ("FIRM") gibt eine Liste von DWORD-Tabellenbezeichnern zurück. Jeder Bezeichner entspricht dem Anfang eines physischen Adressbereichs. Derzeit gibt dieser Anbieter "C0000" und "E0000" zurück. Diese Werte entsprechen dem physischen Speicher von 0xC0000 bis 0xDFFFF bzw. 0xE0000 bis 0xFFFFF.

Der ACPI-Tabellenanbieter ("ACPI") gibt eine Liste von DWORD-Tabellenbezeichnern zurück. Jeder zurückgegebene Bezeichner entspricht dem Signature-Member der DESCRIPTION_HEADER-Struktur für eine ACPI-Tabelle, die sich derzeit im ACPI-Namespace des Systems befindet.

Wenn das System für ACPI mehrere Tabellen mit demselben Namen enthält, werden sie alle mit EnumSystemFirmwareTables aufgezählt. ReadSystemFirmwareTable ruft jedoch nur die erste Tabelle in der Liste mit diesem Namen ab.

Kontext

Ein Handle für einen Kontextblock, der einer Grafikkarte zugeordnet ist. Die DxgkDdiAddDevice-Funktion des Display-Miniporttreibers hat dieses Handle zuvor für das DirectX-Grafikkernsubsystem bereitgestellt.

ProviderSignature

Der Bezeichner des Firmwaretabellenanbieters, an den die Abfrage weitergeleitet werden soll. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
"ACPI" Der ACPI-Firmwaretabellenanbieter.
"FIRM" Der Unformatierte Firmwaretabellenanbieter.
"RSMB" Der Unformatierte SMBIOS-Firmwaretabellenanbieter.

TableId

Der Bezeichner der Firmwaretabelle. Dieser Bezeichner hat das Little-Endian-Format, sodass Sie die Zeichen in der Zeichenfolge umkehren müssen.

Beispielsweise ist FACP ein ACPI-Anbieter, wie im Signature-Member der DESCRIPTION_HEADER-Struktur in der ACPI-Spezifikation beschrieben. Verwenden Sie daher "PCAF", um die FACP-Tabelle anzugeben, wie im folgenden Beispiel gezeigt:

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

BufferSize

Die Größe des Puffers, auf den der Buffer-Parameter in Bytes verweist.

Buffer

Ein optionaler Zeiger auf einen Puffer, der die Liste der Firmwaretabellen empfängt. Wenn dieser Parameter NULL ist, ist der Rückgabewert die erforderliche Puffergröße.

Weitere Informationen zum Inhalt dieses Puffers finden Sie im Abschnitt Hinweise.

RequiredSize

Ein Zeiger auf einen Wert, der die Mindestgröße des Puffers empfängt, auf den puffer in Bytes verweist, den das Betriebssystem zum Verarbeiten der Enumerationsanforderung benötigt.

ReadSystemFirmwareTable

Liest die Systemfirmwaretabelle. Alle Eingabeparameter werden vom Anzeigeminiporttreiber bereitgestellt.

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

Der RAW-SMBIOS-Tabellenanbieter ("RSMB") ruft den Inhalt der unformatierten SMBIOS-Firmwaretabelle ab. Der Puffer, auf den der Buffer-Parameter verweist, empfängt die folgenden Daten:

#include <windows.h>

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

Der Unformatierte Firmwaretabellenanbieter ("FIRM") ruft den Inhalt des angegebenen physischen Adressbereichs ab. ReadSystemFirmwareTable gibt die Größe des Adressbereichs zurück.

Der ACPI-Tabellenanbieter ('ACPI') ruft den Inhalt der angegebenen ACPI-Tabelle ab. Da OEMs ACPI-Firmwaretabellen einschließen können, die nicht in der ACPI-Spezifikation aufgeführt sind, sollten Sie zuerst die Funktion EnumSystemFirmwareTables aufrufen, um alle ACPI-Tabellen aufzulisten, die sich derzeit im System befinden.

Wenn das System für ACPI mehrere Tabellen mit demselben Namen enthält, werden sie alle mit EnumSystemFirmwareTables aufgezählt. ReadSystemFirmwareTable ruft jedoch nur die erste Tabelle in der Liste mit diesem Namen ab.

Kontext

Ein Handle für einen Kontextblock, der einer Grafikkarte zugeordnet ist. Die DxgkDdiAddDevice-Funktion des Display-Miniporttreibers hat dieses Handle zuvor für das DirectX-Grafikkernsubsystem bereitgestellt.

ProviderSignature

Der Bezeichner des Firmwaretabellenanbieters, an den die Abfrage weitergeleitet werden soll. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
"ACPI" Der ACPI-Firmwaretabellenanbieter.
"FIRM" Der Unformatierte Firmwaretabellenanbieter.
"RSMB" Der Unformatierte SMBIOS-Firmwaretabellenanbieter.

TableId

Der Bezeichner der Firmwaretabelle. Dieser Bezeichner hat das Little-Endian-Format, sodass Sie die Zeichen in der Zeichenfolge umkehren müssen.

Beispielsweise ist FACP ein ACPI-Anbieter, wie im Signature-Member der DESCRIPTION_HEADER-Struktur in der ACPI-Spezifikation beschrieben. Verwenden Sie daher "PCAF", um die FACP-Tabelle anzugeben, wie im folgenden Beispiel gezeigt:

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

BufferSize

Die Größe des Puffers, auf den der Buffer-Parameter in Bytes verweist.

Buffer

Ein optionaler Zeiger auf einen Puffer, der die angeforderte Firmwaretabelle empfängt. Wenn dieser Parameter NULL ist, ist der Rückgabewert die erforderliche Puffergröße.

Weitere Informationen zum Inhalt dieses Puffers finden Sie im Abschnitt Hinweise.

RequiredSize

Ein Zeiger auf einen Wert, der die Mindestgröße des Puffers empfängt, auf den puffer in Bytes verweist, den das Betriebssystem zum Verarbeiten der Leseanforderung benötigt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Unterstützte Mindestversion (Server) Windows Server 2012
Kopfzeile dispmprt.h (include Dispmprt.h)

Weitere Informationen

EnumSystemFirmwareTables

ReadSystemFirmwareTable