Recognize CD volume label
This task is solved in two steps. 1) definition of the letter of the existing CD-ROM drive. In these purposes GetLogicalDrives and GetDriveType functions are used. 2) obtaining of the information on the device by calling the GetVolumeInformation function. This unit shows it:
public { Public declarations } function GetCDLetter: string; function GetCDLabel(Drive: string): string; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=GetCDLabel(GetCDLetter()); end; function TForm1.GetCDLetter: string; var N: Byte; Drv: string; Drives: set of 0..25; begin Integer(Drives):=GetLogicalDrives; for N:=0 to 25 do if N in Drives then begin Drv:=Char(N+Ord('A'))+':\'; if(GetDriveType(PChar(Drv))=5) then begin Result:=Drv; Exit; end; end; end; function TForm1.GetCDLabel(Drive: string): string; var VolumeName: array[0..255] of Char; FileSystemType: array[0..255] of Char; SerialNum: DWORD; MaxFilenameLength: DWORD; Flags: DWORD; begin if (GetVolumeInformation( PChar(Drive), VolumeName, 256, @SerialNum, MaxFilenameLength, Flags, FileSystemType, 256)) then Result:=VolumeName else Result:='No CD Present'; end;