Delphi-Quellcode:
// IsAudioCD ?
//==============================================================================
function IsAudioCD(const CDDrive: Char) : Boolean;
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
CDHandle : THandle;
cdd : CDROM_DISK_DATA;
rb : DWord;
begin
Result := False;
CDHandle := CreateFile(PChar('\\.\' + CDDrive + ':'),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
rb := 0;
if (CDHandle <> INVALID_HANDLE_VALUE)
and DeviceIoControl(CDHandle,
IOCTL_CDROM_DISK_TYPE,
Nil,
0,
@cdd,
sizeof(cdd),
rb,
Nil)
then
Result := cdd.DiskData and $03 = 1;
CloseHandle(CDHandle);
end;
Der Funktion wird der Laufwerksbuchstabe des CDROMs übergeben. In der Function wird das
Handle auf das Laufwerk bzw die CD geholt, der CDROM_DISK_TYPE ermittelt und das
Handle wieder geschlossen.
Wird in dem Laufwerk eine AudioCD gefunden, ist das Ergebnis TRUE. In allen anderen Fällen, zB keine CD, DatenCD, MixedCD, ist das Ergebnis FALSE.