Detect diskrete GPU

8

Mein Ziel ist es, diskrete GPUs auf Multi-GPU-Systemen (zum Beispiel integrierte Intel HD Graphics diskrete AMD Radeon Karte) mit C #

zu erkennen

Normalerweise verwende ich diesen Code:

%Vor%

Es funktioniert wie ein Zauber für mein oben beschriebenes Beispiel.

Aber es ist nicht geeignet für AMD , VIA usw. (ich kenne nicht alle Hersteller) integrierte Karten.

Gibt es also einen universellen Ansatz, um alle integrierten GPUs abzuschneiden?

    
bairog 24.04.2014, 07:32
quelle

1 Antwort

1

Um die Antwort zu verstehen, müssen wir verstehen, wie Kernel-Modus-Treiber Geräte erstellen.

Um eine Liste der Treiber anzuzeigen, rufen Sie msinfo32 im Dialogfeld Ausführen auf, wählen Sie die Softwareumgebung - & gt; Systemtreiber aus. Von dort können Sie alle registrierten Treiber auf Ihrem System sehen, sowie ihren Startmodus (Manuell / Boot / System) und Status (ausgeführt / Gestoppt).

Wenn Plug-and-Play-Gerätetreiber geladen werden (vom Plug & Play-Manager), erstellt jeder Treiber ein oder mehrere Geräte (mit IoCreateDevice ). Einige dieser Treiber sind jedoch als Bustreiber kategorisiert. Als Ergebnis wird das System die von diesem Bustreiber gemeldeten Geräte aufzählen, und es wird ein Baum erstellt (beginnend mit einem imaginären "Root" -Gerät). Zum Beispiel, wenn der PCI-Bus ein Gerät erkennt, weiß es nichts über das Gerät (könnte eine Netzwerkkarte, Soundkarte, Grafikkarte, etc. sein). Daher muss der Plug-and-Play-Manager den passenden Treiber des Geräts finden. Alle eingebetteten / integrierten Geräte (Sound, Netzwerk, Video, USB, Firewire, SATA usw.) werden gleich behandelt und sind im Allgemeinen auch PCI-Geräte. Letztendlich weiß das Betriebssystem nicht, ob das Gerät eingebettet oder diskret ist.

Gehen Sie zu Geräte-Manager und wählen Sie Anzeigen - Geräte nach Verbindung , um den erstellten Baum anzuzeigen.

Was den @Machinarius PInvoke-Kommentar angeht, wird PInvoke hier nicht helfen. Allerdings stimme ich ihm in Bezug auf die Erkennung von Funktionen und Fähigkeiten sind der Weg zu gehen. Und denken Sie daran, dass wir nicht wissen, was die Zukunft bringt, deshalb ist der Ausschluss von Geräten möglicherweise nicht weise. Jeder Code von Drittanbietern zur Unterstützung wird wahrscheinlich hart codierende Werte sein.

Hoffe, das hilft.

    
Jeff 25.04.2014, 16:04
quelle

Tags und Links