AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi CPU ID - Ausleseproblem bei einem Dualboard
Thema durchsuchen
Ansicht
Themen-Optionen

CPU ID - Ausleseproblem bei einem Dualboard

Ein Thema von delphi_newbie_123 · begonnen am 16. Jan 2005 · letzter Beitrag vom 7. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
delphi_newbie_123

Registriert seit: 14. Jan 2004
181 Beiträge
 
Delphi 5 Enterprise
 
#1

CPU ID - Ausleseproblem bei einem Dualboard

  Alt 16. Jan 2005, 18:02
Hallo,
mit folgendem Code versuche ich die CPU-ID zu generieren.
Doch, falls der PC 2 CPUs also ein Dualboard besitzt, funktioniert der code nicht mehr so wie er soll.
Wie kann man erreichen, dass immmer nur 1 CPU ausgelesen wird?
Oder könnte man irgendwie irgendwelche andere Hardware-IDs auslesen, die auch anch dem Formatieren gleich bleiben.
Danke euch !
Delphi-Quellcode:
const
  ID_BIT = $200000; // EFLAGS ID bit
type
  TCPUID = array[1..4] of Longint;

function IsCPUID_Available: Boolean; register;
asm
PUSHFD {direct access to flags no possible, only via stack}
POP EAX {flags to EAX}
MOV EDX,EAX {save current flags}
XOR EAX,ID_BIT {not ID bit}
PUSH EAX {onto stack}
POPFD {from stack to flags, with not ID bit}
PUSHFD {back to stack}
POP EAX {get back to EAX}
XOR EAX,EDX {check if ID bit affected}
JZ @exit {no, CPUID not availavle}
MOV AL,True {Result=True}
@exit:
end;

function GetCPUID: TCPUID; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
MOV EAX,EBX
STOSD {CPUID[2]}
MOV EAX,ECX
STOSD {CPUID[3]}
MOV EAX,EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;
function GetID: string;
//IntToPos ist notwendig, da in extrem seltenen Fällen negative CPU-ID's vorkommen
  function IntToPos(Value: Integer): integer; overload;
  begin
    if Value < 0 then
      Result := -Value
    else
      Result := Value;
  end;
  function IntToPos(Value: Int64): int64; overload;
  begin
    if Value < 0 then
      Result := -Value
    else
      Result := Value;
  end;

begin
  if IsCPUID_Available then
    result := IntToStr(IntToPos(GetCPUID[1])) + IntToStr(IntToPos(GetCPUID[2]))
      + IntToStr(IntToPos(GetCPUID[3])) + IntToStr(IntToPos(GetCPUID[4]))
  else

    result := '70000'; //Dummywert
end;
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#2

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 16. Jan 2005, 18:07
Zitat:
Oder könnte man irgendwie irgendwelche andere Hardware-IDs auslesen, die auch anch dem Formatieren gleich bleiben.
Seriennummer der Festplatte, MAC-Adresse der LAN-Karte...
Lukas
  Mit Zitat antworten Zitat
delphi_newbie_123

Registriert seit: 14. Jan 2004
181 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 16. Jan 2005, 18:42
hi,
wurde irgendetwas davon schon im Forum besprochen?
Festplattennummer soll, einem Beitrag zufolge nach dem Formatieren verloren gehen.
Danke sehr fuer die Antwort
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#4

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 16. Jan 2005, 18:49
Zitat:
Festplattennummer soll, einem Beitrag zufolge nach dem Formatieren verloren gehen.
Jo, nach jedem Formatieren ändert sich die Datenträgerbezeichnung der Festplatte.
Und das mit der Mac-Adresse der Netzwerkkarte ist auch net sehr sicher, da es im Internet einige Software gibt mit der man diese Nummer ändern kann bzw. eine andere Nummer vortäuschen kann.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#5

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 16. Jan 2005, 18:54
Zitat von delphman:
Zitat:
Festplattennummer soll, einem Beitrag zufolge nach dem Formatieren verloren gehen.
Jo, nach jedem Formatieren ändert sich die Datenträgerbezeichnung der Festplatte.
Die Datenträgerbezeichnung und die FAT-ID mit Sicherheit auch, aber die Seriennummer wird sich ganz bestimmt nicht ändern. Allerdings weiß ich nicht, ob man die überhaupt bei jeder Platte softwareseitig auslesen kann und ob das seit Windows auch noch unter Delphi geht.
  Mit Zitat antworten Zitat
delphi_newbie_123

Registriert seit: 14. Jan 2004
181 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 16. Jan 2005, 19:01
welche Möglichkeit habe ich, wenn ich dann die Serialnummer des Mainboards auslesen will`?
Ich brauche unbedingt eine feste ID, die isch niemals ändert :/.
Villeicht vom Bioschip.
Was ist eigenlich egal ..
Danche fuer eure Antworten
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 16. Jan 2005, 19:22
Also da dies öfters auftaucht muss ich mich dazu mal äußern.

Hier wird zwar immerwieder geschrieben das sich die Festplatten-ID nach dem formatieren ändert, aber vielmehr meinen die Leute damit die VolumeID. Leider wissen da manche den Unterschied nicht. Wenn eine partition formatiert wird, so wird dieser partition eine ID zugewiesen. Diese ID ändert sich logicherweise wenn man die platte neu schreibt. Dann gibt es aber noch eine FestplattenID welche sich nicht ändert. Die VolumeID gibt es also für Laufwerk C, D, E, F etc. und dann gibt es die Festplatten ID welche nichts mit Laufwerk C, D, E etc. zu tun hat sondern wirklich nur mit der Festplatte, unabhängig davon ob diese formatiert/partitioniert wurde oder nicht.

Zitat:
Allerdings weiß ich nicht, ob man die überhaupt bei jeder Platte softwareseitig auslesen kann und ob das seit Windows auch noch unter Delphi geht.
Ja, es ist auch unter windows möglich diese Nummer auszulesen, Google ist dein Freund...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
delphi_newbie_123

Registriert seit: 14. Jan 2004
181 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 16. Jan 2005, 19:29
ok danke.
Ich such dann mal weiter...
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 17. Jan 2005, 06:12
Du musst vermutlich sicherstellen das der Thread auf einer bestimmten CPU laeuft.
Dazu gibt es eine Funktion ProcessorAffinityMask (oder so aehnlich).
Such mal bei Google mit den Wortbestandteilen.
  Mit Zitat antworten Zitat
delphi_newbie_123

Registriert seit: 14. Jan 2004
181 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: CPU ID - Ausleseproblem bei einem Dualboard

  Alt 17. Jan 2005, 11:17
Danke, habe einen Beitrag gefunden,
wo erklärt wird wie man die Festplattenserialnummer auslesen kann.
Ich verwende wahrscheinlich die angebotene lösung.
Danke euch!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz