Laden...

L2 Cache des Prozessors auslesen

Erstellt von partyboy vor 17 Jahren Letzter Beitrag vor 16 Jahren 2.576 Views
P
partyboy Themenstarter:in
109 Beiträge seit 2005
vor 17 Jahren
L2 Cache des Prozessors auslesen

Hi,

ich versuche mich daran, den L2 Cache meines Prozessors auszulesen.

Dabei verwende ich folgenden Code:


ManagementObject mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'");

    try
    {        
        MessageBox.Show(mo["L2CacheSize"].ToString());
    }
    catch {}
    mo.Dispose();

Leider wird mir immer "0" zurückgeliefert. Der richtige Prozessor ists auf jeden Fall, ich kann erfolgreich die Taktfrequenz mittels WMI auslesen.

Was mache ich falsch?

partyboy

P
partyboy Themenstarter:in
109 Beiträge seit 2005
vor 17 Jahren

Es scheint ein bekanntes Problem zu sein und hier gibts ne Lösung(?) http://support.microsoft.com/kb/894569

Win32 CacheMemory WMI Klasse verwenden, um die MaxCacheSize Eigenschaft zurückzugeben

Weiß jemand was damit anzufangen?

partyboy

906 Beiträge seit 2005
vor 17 Jahren

mache es über den CPUID-Befehl. Lagere die Erkennung in eine C-DLL und rufe es über DLLImport auf. Dazu gabs hier schon einen Thread zu 😉

P
partyboy Themenstarter:in
109 Beiträge seit 2005
vor 17 Jahren

Hi,

haste den Thread grade parat oder irgendwelche Anhaltspunkte, wie ich ihn finden kann? Die Suche nach "CPUID" im Forum bringt keine Treffer.

partyboy

906 Beiträge seit 2005
vor 17 Jahren

Schau mal hier:

http://www.codeproject.com/csharp/unmanage.asp

Hier ein Teil über die CPUID:

http://en.wikipedia.org/wiki/CPUID

Wenn du genau Fragen hast, dann frage. Ich hatte selber mal ein CPU-Erkennungstool gemacht.

C
9 Beiträge seit 2008
vor 16 Jahren
CPU Informationen auslesen

Hi,
bin gerade dabei ein Programm zu schreiben, dass Hardwareinformationen ausgeben soll. Habe über WMI versucht die ProcessorID auszulesen. Diese speicherre ich in einem string. Mein Problem ist nun, das ich einen 16 stelligen string zurückbekomme (178BFBFF00040F33), aus dem ich keine Informationen ziehen kann. Muss ich diese Zeichenfolge noch irgendwie konvertieren? Hier mal der Code von meinem kleinen Testprogramm:


ManagementObject CpuData = new ManagementObject("Win32_Processor.DeviceID='CPU0'");
string CPUID = "";
            try
            {
                CPUID = (string)(CpuData["ProcessorID"]);
                
            }
            catch { }
            
            CpuData.Dispose();

            label1.Text = Convert.ToString(CPUID);


Wär toll, wenn mir jemand weiterhelfen könnte - oder vielleicht ein paar Tips hätte. Achja, kann man irgendwo einsehen, was man alles mit WMI auslesen kann, wie z.B CurrentClockSpeed, L2CacheSize, ProcessorID...usw.

danke im voraus

mfg cpu

3.511 Beiträge seit 2005
vor 16 Jahren

Was für Informationen möchtest du den aus der ID der CPU auslesen? Meines wissens nach, ist es hat nichts weiter als eine ID. Da sind keine versteckten Botschaften enthalten...

Achja, kann man irgendwo einsehen, was man alles mit WMI auslesen kann, wie z.B CurrentClockSpeed, L2CacheSize, ProcessorID...usw.

Jepp, nennt sich Visual Studio 2005/2008. Allerdings nicht in den Express Varianten so viel ich weis.

EDIT: Sollte vielleicht noch erwähnen wo man es findet 😉
Unter "View->Server Explorer". Dann "Servers->[Computername]->Management Classes". Habe nur englische IDEs, darum weis ich die Deutschen Pfade nicht (was ja allerdings nicht schwer zu übersetzen ist).

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

C
9 Beiträge seit 2008
vor 16 Jahren

Hi, danke erstmal für die schnelle Antwort.

also prinzipiell wollt ich so viele Informatinen auslesen wie möglich. Also Hersteller,genaue Bezeichnung der CPU, Taktrate, die Caches, den Kern falls möglich, die Spannungen usw.

Also eigentlich so ne Art Everest, nur selbst geschrieben 😉

Ich dachte Hersteller und "CPU Name" könnten in der ID stehen, also dass die Zeichenkette diese Werte liefert.

3.511 Beiträge seit 2005
vor 16 Jahren

also prinzipiell wollt ich so viele Informatinen auslesen wie möglich. Also Hersteller,genaue Bezeichnung der CPU, Taktrate, die Caches, den Kern falls möglich, die Spannungen usw

Also Bezeichnung der CPU steckt in der Eigenschaft "Name". Taktrate in "MaxClockSpeed" (Win32_Processor Klasse).
Die Werte für die Caches sind in den Eigenschaften "L2CacheSize" und "L2CacheSpeed" zu finden. Unter Vista sind dann auch die Eigenschaften für "L3CacheSize" und "L3CacheSpeed" hinzugekommen.
Tja, bei Spannung muss ich mich geschlagen geben. Es gibt zwar die Klasse Win32_VoltageProbes, aber da steht nicht wirklich viel drin.

Das beste wäre wirklich, die Daten im unmanaged Bereich zu ermitteln. WMI stößt da auch auf seine Grenzen. Die Links von MagicAndre1981 sind da schon genau die Richtigen.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

C
9 Beiträge seit 2008
vor 16 Jahren

Hi,

werd mir die Links mal anschauen und ein bischen rumprobieren.

Danke für die Hilfe

mfg cpu