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) |