![]() |
IsAudioCD für WinNT
Delphi-Quellcode:
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.
// 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; 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. |
Re: IsAudioCD für WinNT
Mit der Zeile
Delphi-Quellcode:
wird bestimmt, ob auf der CD nur Datentracks, nur Audiotracks oder beides enthalten sein darf.
Result := cdd.DiskData and $03 = 1;
Wenn Du weniger streng bist und
Delphi-Quellcode:
nimmst, bekommst Du auch TRUE, wenn Audio- und Datentracks auf der CD sind. Deine Methode versagt dann allerdings.
Result := cdd.DiskData and $01 = 1;
Vergleiche auch ![]() |
Re: IsAudioCD für WinNT
Zitat:
|
Re: IsAudioCD für WinNT
Zitat:
Delphi-Quellcode:
case cdd.DiskData and $03 of
CDROM_DISK_AUDIO_TRACK: // 1 Result := 'AudioCD'; CDROM_DISK_DATA_TRACK: // 2 Result := 'DatenCD'; CDROM_DISK_DATA_TRACK + CDROM_DISK_AUDIO_TRACK: // 3 Result := 'MixedCD'; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz