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.