Entwickler-Ecke
Windows API - Seriennummer eines Datenträgers ermitteln
Peter18 - Fr 25.05.12 16:51
Titel: Seriennummer eines Datenträgers ermitteln
Ein freundliches Hallo an alle,
und wieder ein Datenträgerproblem: Ich möchte die Seriennummer eines wechselbaren Datenträgers ermitteln, um ihn eindeutig zu identifizieren. Dazu habe ich die "
GetVolumeInformation" verwendet. Ich erhalte aber nur "1" als Ergebnis oder eine Fehlermeldung, wenn ich einen Pointer verwende.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function VolumeSN(Drive: string): string; var OldErrorMode : Integer; NotUsed, VolFlags : DWORD; SN : LPDWORD; Buf : array [0..MAX_PATH] of Char; begin OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS); try GetVolumeInformation(PChar(Drive), Buf, sizeof(Buf), SN, NotUsed, VolFlags, nil, 0); Result := IntToStr( Integer( SN ) ); finally SetErrorMode(OldErrorMode); end; end; |
Hat jemand einen Tipp?
Dank im voraus mit Grüßen von der Nordsee
Peter
bummi - Fr 25.05.12 17:17
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function VolumeSN(Drive: Char): string; var sn,cl,sf:DWord; begin sn :=0; cl := 0; sf := 0; GetVolumeInformation(PChar(Drive + ':\') , nil, 0 , @SN , cl ,sf , nil, 0); Result := IntToHex(HiWord(sn), 4) + '-' + IntToHex(Word(sn), 4); end; |
jaenicke - Fr 25.05.12 17:44
Wobei es wenig Sinn macht den Rückgabewert zu ignorieren... Wenn die Funktion fehlschlägt, sollte man das schon behandeln. ;-)
Peter18 - Sa 26.05.12 11:33
Hallo bummi, hallo jaenicke,
dank euch beiden, :D die Hilfe hat das nicht hergegeben, aber warscheinlich hätte ich mich auch noch bei Windows umsehen sollen.
Danke noch mal und Grüße von der Nordsee
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!