// CDROM Type //============================================================================== function CDROM_Type(const CDHandle : THandle) : String; const
CDROM_DISK_AUDIO_TRACK = $00001;
CDROM_DISK_DATA_TRACK = $00002;
IOCTL_CDROM_DISK_TYPE = $20040; type
CDROM_DISK_DATA = Record
DiskData : ULONG; end; var
cdd : CDROM_DISK_DATA;
rb : DWord; begin
Result := '';
rb := 0;
if DeviceIoControl(CDHandle,
IOCTL_CDROM_DISK_TYPE, Nil,
0,
@cdd,
sizeof(cdd),
rb, Nil) then case cdd.DiskData and $03 of
CDROM_DISK_DATA_TRACK:
Result := 'DatenCD';
CDROM_DISK_AUDIO_TRACK:
Result := 'AudioCD';
CDROM_DISK_DATA_TRACK + CDROM_DISK_AUDIO_TRACK:
Result := 'MixedCD'; end else
Result := GetLastErrorMsg; end;
// Letzte Fehlermeldung //============================================================================== function GetLastErrorMsg: String; var
Fehler : PChar; begin
GetMem (Fehler, 255);
FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER or
FORMAT_MESSAGE_FROM_SYSTEM, nil,
GetLastError,
0,
@Fehler,
255, nil);
Result := Trim(Fehler); end;
Der Function wird das mit CreateFile erhaltene Handle übergeben und man erhält einen String zurück. Im Beispielprojekt auch eine Zahl,