Forum: Mikrocontroller und Digitale Elektronik Immer noch ungelöste Problem ...


von Andy Prog (Gast)


Lesenswert?

wie kann ich den Harddriver Serial number rausfinden
Folgende Assembler Syntax liefert die CPU Name


char cpuVendor[256];

_asm {
        mov eax,0
            cpuid
            mov DWORD PTR cpuVendor +0,ebx
            mov DWORD PTR cpuVendor +4,edx
            mov DWORD PTR cpuVendor +8,ecx
        mov Byte PTR cpuVendor +12,0
    }
es muss doch so was vergleichbares für "HD Serial number" bzw. "HD 
Model" geben ...

Kann mir jemand weiter helfen?

Habe bei Google gesucht - und habe nichts passendes gefunden bzw. nur 
umfangreiche Projekte mit ganzem Hardware ID's

Prog40
von Marc (Gast)


Lesenswert?

Der Befehl vol auf der DOS-Ebene sollte dir weiterhelfen...
von Andy Prog (Gast)


Lesenswert?

"VOL" Befehl leifert keinen Datenträger Number sondern ID die immer neu 
nach dem Format vergeben wird.

Danke aber das bringt mich nicht weiter.

ich brauche Hersteller ID-Number, mit Assembler muss es doch möglich 
sein die andere Prog.(z.b. Motherboard Tools, und tausend andere) machen 
das doch.

Prog40
von mikki merten (Gast)


Lesenswert?

Schau dir mal den ATA-Standard get-drive-id bzw. get-drive-parameters 
an. Doku dazu gibts bei vielen HD-Herstellern als PDF
von Thomas Zepf (Gast)


Lesenswert?

Dafür gibt es unter Win zb. API Aufrufe. Es ist also kein Assembler 
notwendig.
Suche mal nach GetVolumeInformation() das sollte die notwendigen 
Informationen liefern
von Andy Prog (Gast)


Lesenswert?

Habe doch oben geschrieben "VOL" DOS Befehl bringt hier nichts!!!!!!

Also noch mal die WIN API Funktion "GetVolumeInformation()"
leifert das gleiche wie das "VOL" DOS Befehl (Formatierungs Datum + 
Uhrzeit)
von Thomas Zepf (Gast)


Lesenswert?

Lies doch erst mal die Beschreibung zu GetVolumeInformation
genauer durch die Serial No kommt sehr wohl zurück

ein kleines Beispiel in Pascal

lpVolumeNameBuffer:= NIL;
lpFileSystemNameBuffer:=NIL;
nVolumeNameSize:=0;
nFileSystemNameSize:=0;
lpMaximumComponentLength:=0;
lpFileSystemFlags:=0;
lpRootPathName:='c:\';
if GetVolumeInformation(lpRootPathName,
                       lpVolumeNameBuffer,
                       nVolumeNameSize,
                       @VolumeSerialNumber,
                       lpMaximumComponentLength,
                       lpFileSystemFlags,
                       lpFileSystemNameBuffer,
                       nFileSystemNameSize) then
Begin
// hier steht in VolumeSerial Number der gewünschte wert
End;

Ich mach das schon seit Jahren so und bekomme damit zumindest hier immer 
die Serial No. Google sagt das übrigens auch

Thomas
von Andy Prog (Gast)


Lesenswert?

Ok.
dann probiere mal den SerialNumber von A (Diskette 1,44 )zu ermitelln, 
danach farmatiere die, und jetzt kommt:
die Diskette hat nach dem Format endere SerialNumber.
Wenn du mir nicht glaubst versuche es mit der HD ... dann weisst du das 
die WinAPI keine Hersteller ID-Number zurück gibt.
Also noch mal das geht nur mit Assembler.

Prog40
von Johannes Raschke (Gast)


Lesenswert?

Ich weiß ja nicht, wie das bei Festplatten ist, aber bei Disketten gibt 
es nunmal überhaubt keine Hersteller - Seriennummer. Deshalb kann die 
Seriennummer beim Formatieren immer neu vergeben werden, steht dann halt 
in Sektor 0 oder so.
Bei Festplatten dürfte das anders sein.
Möglicherweise ist es aber nicht möglich, ohne Spezialkenntnisse des 
Herstellers diese Numer auszulesen.


Johannes
von mikki merten (Gast)


Lesenswert?

@Andy
Über diesen Link dürftest du an die gewünschten Info's kommen:
http://www.epanorama.net/links/pc/storage.html#ide
von Michael Kiausch (Gast)


Lesenswert?

ich würd mir mal die sourcen von "hdparm" unter linux anschauen...
http://freshmeat.net/projects/hdparm/?topic_id=146%2C861
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.