Um den Namen, die Serieannummber und den Typ eines Laufwerks zu ermitteln genügt ein Aufruf der Funktion 
GetVolumeInformation. Die diese Funktion gleich mehrere Informationen über ein Laufwerk liefert habe ich ein Rekord und eine neuen Funktion gebastelt um die Arbeit einwenig zu erleichtern.
												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 
 | TypetVolumeInfo = Record
 Drive: Char;
 Name: String;
 SerialNumber: DWord;
 FileSystemName: String;
 End;
 
 Function GetVolumeInfo (aDrive: Char): tVolumeInfo;
 Var
 OldErrorMode: Integer;
 Dummy1, Dummy2: DWord;
 VolumeNameBuf,
 FileSystemNameBuf: Array [0..MAX_PATH] of Char;
 VolumenSerialNumber: pDWord;
 
 Info: tVolumeInfo;
 Begin
 With Info Do
 Begin
 Drive := aDrive;
 Name := '';
 SerialNumber := 0;
 FileSystemName := '';
 End;
 
 OldErrorMode := SetErrorMode (SEM_FAILCRITICALERRORS);
 Try
 If GetVolumeInformation (
 pChar (aDrive + ':\'),
 VolumeNameBuf, SizeOf (VolumeNameBuf),
 VolumenSerialNumber, Dummy1, Dummy2,
 FileSystemNameBuf, SizeOf (FileSystemNameBuf)
 )
 Then
 Begin
 Info.Name := VolumeNameBuf;
 Info.SerialNumber := VolumenSerialNumber^;
 Info.FileSystemName := FileSystemNameBuf;
 End;
 Finally
 SetErrorMode (OldErrorMode);
 End;
 
 Result := Info;
 End;
 | 
		
	  
In dieser Funktion benutze ich auch die 
SetErrorMode Funktion. Damit umgehe ich eine Abfrage wenn eventl. eine Diskette im Diskettelaufwerk oder eine CD im CD-Laufwerk nicht eingelegt ist.
Aufgerufen wird die Funktion so:
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 
 | Procedure TForm1.Button1Click (Sender: TObject);Var
 Info: tVolumeInfo;
 Str: String;
 Begin
 Info := GetVolumeInfo ('d');
 
 Str := 'Informationen über Laufwerk' + #32 + Info.Drive;
 Str := Str + #13#10#32#32 + 'Name: ' + Info.Name;
 Str := Str + #13#10#32#32 + 'Serial: ' + IntToStr (Info.SerialNumber);
 Str := Str + #13#10#32#32 + 'System: ' + Info.FileSystemName;
 
 MessageDlg (Str, mtInformation, [mbOK], 0);
 End;
 |