[6] System Information Capture in Detail


System Information Capture in Detail

The CInterface class, provided through the given structures and functions, enables efficient management of graphic resources such as graphics cards, monitors, and their supported display modes.

First, I would like to introduce the basic structures:

  • GXADAPTER: Describes a graphics card in the system.
  • GXOUTPUT: Represents an output connected to a graphics card.
  • GXDISPLAYMODE: Describes a display mode supported by a monitor.
  • GXFREQUENCY: This structure represents a frequency supported by a display mode.

The central element is the GXINTERFACE structure, which serves as an interface for managing all graphic resources. It contains a list of graphics cards (adapters) in the system as well as functions for querying these resources.

The functions of the GXINTERFACE include:

The custom constructor initializes the interface and sets basic variables such as the DXGI format and hardware support.

Various functions like GfxModeExists, GetGfxModeWidth, GetGfxModeHeight allow retrieving information about supported display modes and their properties.

  • The CleanupResources function clears all stored information about supported display modes and frequencies, useful for freeing memory or resetting the interface.
  • Functions like GetGfxDriverName, GetHardwareGPU, GetDXGI_Format retrieve information about the graphics card and its properties.
  • The SetDXGI_Format and SetHardwareGPU functions allow adjusting settings such as the DXGI format and hardware support.
  • The functions GetNumerator, GetDenominator, and GetMaxFrequnecy retrieve information about the maximum supported frequency for a specific display mode.

In summary, the CInterface provides a comprehensive way to access, manage, and retrieve information about graphic resources. It enables developers to effectively utilize and customize the graphics performance of their systems.

To conclude on the topic of system information, I'd like to present a few lines of code demonstrating the usage of the engine.

Example 1:


This code checks if the graphic format R8G8B8A8_UNORM is supported by the engine. If the format is supported, a message stating that the tested format is supported is logged. Otherwise, a message stating that the tested format is not supported is logged.

Example 2:


This code checks if a specific display mode with a resolution of 1280x1024 and a frequency of 120 Hz exists. If the mode exists, a message stating that the mode exists is logged. Otherwise, a message stating that the mode does not exist is logged.

Example 3:

This code counts the number of available graphics drivers and then iterates a loop for each graphics driver. Within the loop, the current graphics driver is set, and the name of the graphics card as well as the number of connected monitors are logged.

I believe this kind of code is relatively easy to understand and apply since it provides a simple and clear approach to querying information about the graphics hardware of a system. It enables developers to quickly and efficiently obtain basic information about the graphics cards in a system and perform advanced operations as needed.


Systeminformationserfassung im Detail

Die Klasse CInterface, bereitgestellt durch die gegebenen Strukturen und Funktionen, ermöglicht die effiziente Verwaltung von Grafikressourcen wie Grafikkarten, Monitoren und deren unterstützten Anzeigemodi.

Zuerst möchte ich die grundlegenden Strukturen vorstellen:

  • GXADAPTER: Beschreibt eine Grafikkarte im System. 
  • GXOUTPUT: Repräsentiert einen Ausgang, der mit einer Grafikkarte verbunden ist.
  • GXDISPLAYMODE: Beschreibt einen Anzeigemodus, der von einem Monitor unterstützt wird.
  • GXFREQUENCY: Diese Struktur repräsentiert eine Frequenz, die von einem Display-Modus unterstützt wird.

Das zentrale Element ist die GXINTERFACE-Struktur, welche als Schnittstelle zur Verwaltung aller Grafikressourcen dient. Sie enthält eine Liste von Grafikkarten (Adapters) im System sowie Funktionen zur Abfrage dieser Ressourcen.

Die Funktionen der GXINTERFACE umfassen:

Durch den benutzerdefinierten Konstruktor wird das Interface initialisiert und grundlegende Variablen wie das DXGI-Format und die Hardwareunterstützung gesetzt.

Verschiedene Funktionen wie GfxModeExists, GetGfxModeWidth, GetGfxModeHeight ermöglichen es, Informationen über unterstützte Anzeigemodi und deren Eigenschaften abzurufen.

  • Die Funktion CleanupResources löscht alle gespeicherten Informationen über unterstützte Anzeigemodi und Frequenzen, was nützlich ist, um Speicher freizugeben oder das Interface zurückzusetzen.
  • Mit Funktionen wie GetGfxDriverName, GetHardwareGPU, GetDXGI_Format können Informationen über die Grafikkarte und deren Eigenschaften abgerufen werden.
  • Die Funktionen SetDXGI_Format und SetHardwareGPU ermöglichen es, Einstellungen wie das DXGI-Format und die Hardwareunterstützung anzupassen.
  • Durch die Funktionen GetNumerator, GetDenominator und GetMaxFrequnecy können Informationen über die maximal unterstützte Frequenz für einen bestimmten Anzeigemodus abgerufen werden.

Zusammenfassend bietet das CInterface eine umfassende Möglichkeit, auf Grafikressourcen zuzugreifen, sie zu verwalten und Informationen über sie zu erhalten. Es ermöglicht Entwicklern, die Grafikleistung ihres Systems effektiv zu nutzen und anzupassen.


Zum Abschluss zum Thema Systeminformationen möchte ich ein paar Zeilen Code zeigen, die die Verwendung der Engine zeigen.

Beispiel 1:


Dieser Code überprüft, ob das Grafikformat R8G8B8A8_UNORM von der Engine unterstützt wird. Wenn das Format unterstützt wird, wird eine Meldung ausgegeben, die besagt, dass das getestete Format unterstützt wird. Andernfalls wird eine Meldung ausgegeben, die besagt, dass das getestete Format nicht unterstützt wird.

Beispiel 2:


Dieser Code überprüft, ob ein bestimmter Anzeigemodus mit einer Auflösung von 1280x1024 und einer Frequenz von 120 Hz existiert. Falls der Modus existiert, wird eine Meldung ausgegeben, die besagt, dass der Modus existiert. Andernfalls wird eine Meldung ausgegeben, die besagt, dass der Modus nicht existiert

Beispiel 3:    


Dieser Code zählt die Anzahl der verfügbaren Grafiktreiber und durchläuft dann eine Schleife für jeden Grafiktreiber. Innerhalb der Schleife wird der aktuelle Grafiktreiber festgelegt und der Name der Grafikkarte sowie die Anzahl der angeschlossenen Monitore werden protokolliert.

Ich denke diese Art von Code ist relativ einfach zu verstehen und anzuwenden, da er einen einfachen und klaren Ansatz zur Abfrage von Informationen über die Grafikhardware eines Systems bietet. Es ermöglicht Entwicklern, schnell und effizient grundlegende Informationen über die Grafikkarten in einem System zu erhalten und bei Bedarf weiterführende Operationen durchzuführen.

Leave a comment

Log in with itch.io to leave a comment.