pub const ADR_ENCODES_CURRENT_POSITION: u32 = 1u32; pub const ADR_ENCODES_ISRC: u32 = 3u32; pub const ADR_ENCODES_MEDIA_CATALOG: u32 = 2u32; pub const ADR_NO_MODE_INFORMATION: u32 = 0u32; pub const AUDIO_DATA_TRACK: u32 = 4u32; pub const AUDIO_STATUS_IN_PROGRESS: u32 = 17u32; pub const AUDIO_STATUS_NOT_SUPPORTED: u32 = 0u32; pub const AUDIO_STATUS_NO_STATUS: u32 = 21u32; pub const AUDIO_STATUS_PAUSED: u32 = 18u32; pub const AUDIO_STATUS_PLAY_COMPLETE: u32 = 19u32; pub const AUDIO_STATUS_PLAY_ERROR: u32 = 20u32; pub const AUDIO_WITH_PREEMPHASIS: u32 = 1u32; pub const CDDA: TRACK_MODE_TYPE = 2i32; pub const CDROM_CD_TEXT_PACK_ALBUM_NAME: u32 = 128u32; pub const CDROM_CD_TEXT_PACK_ARRANGER: u32 = 132u32; pub const CDROM_CD_TEXT_PACK_COMPOSER: u32 = 131u32; pub const CDROM_CD_TEXT_PACK_DISC_ID: u32 = 134u32; pub const CDROM_CD_TEXT_PACK_GENRE: u32 = 135u32; pub const CDROM_CD_TEXT_PACK_MESSAGES: u32 = 133u32; pub const CDROM_CD_TEXT_PACK_PERFORMER: u32 = 129u32; pub const CDROM_CD_TEXT_PACK_SIZE_INFO: u32 = 143u32; pub const CDROM_CD_TEXT_PACK_SONGWRITER: u32 = 130u32; pub const CDROM_CD_TEXT_PACK_TOC_INFO: u32 = 136u32; pub const CDROM_CD_TEXT_PACK_TOC_INFO2: u32 = 137u32; pub const CDROM_CD_TEXT_PACK_UPC_EAN: u32 = 142u32; pub const CDROM_DISK_AUDIO_TRACK: u32 = 1u32; #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_DISK_DATA { pub DiskData: u32, } pub const CDROM_DISK_DATA_TRACK: u32 = 2u32; #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_EXCEPTION_PERFORMANCE_DESCRIPTOR { pub Lba: [u8; 4], pub Time: [u8; 2], } impl Default for CDROM_EXCEPTION_PERFORMANCE_DESCRIPTOR { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_EXCLUSIVE_ACCESS { pub RequestType: EXCLUSIVE_ACCESS_REQUEST_TYPE, pub Flags: u32, } pub const CDROM_EXCLUSIVE_CALLER_LENGTH: u32 = 64u32; #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_EXCLUSIVE_LOCK { pub Access: CDROM_EXCLUSIVE_ACCESS, pub CallerName: [u8; 64], } impl Default for CDROM_EXCLUSIVE_LOCK { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_EXCLUSIVE_LOCK_STATE { pub LockState: bool, pub CallerName: [u8; 64], } impl Default for CDROM_EXCLUSIVE_LOCK_STATE { fn default() -> Self { unsafe { core::mem::zeroed() } } } pub const CDROM_IN_EXCLUSIVE_MODE: u32 = 1u32; pub const CDROM_LOCK_IGNORE_VOLUME: u32 = 1u32; #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_NOMINAL_PERFORMANCE_DESCRIPTOR { pub StartLba: [u8; 4], pub StartPerformance: [u8; 4], pub EndLba: [u8; 4], pub EndPerformance: [u8; 4], } impl Default for CDROM_NOMINAL_PERFORMANCE_DESCRIPTOR { fn default() -> Self { unsafe { core::mem::zeroed() } } } pub const CDROM_NOT_IN_EXCLUSIVE_MODE: u32 = 0u32; pub const CDROM_NO_MEDIA_NOTIFICATIONS: u32 = 2u32; pub type CDROM_OPC_INFO_TYPE = i32; pub type CDROM_PERFORMANCE_EXCEPTION_TYPE = i32; #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_PERFORMANCE_HEADER { pub DataLength: [u8; 4], pub _bitfield: u8, pub Reserved2: [u8; 3], pub Data: [u8; 1], } impl Default for CDROM_PERFORMANCE_HEADER { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_PERFORMANCE_REQUEST { pub RequestType: CDROM_PERFORMANCE_REQUEST_TYPE, pub PerformanceType: CDROM_PERFORMANCE_TYPE, pub Exceptions: CDROM_PERFORMANCE_EXCEPTION_TYPE, pub Tolerance: CDROM_PERFORMANCE_TOLERANCE_TYPE, pub StaringLba: u32, } pub type CDROM_PERFORMANCE_REQUEST_TYPE = i32; pub type CDROM_PERFORMANCE_TOLERANCE_TYPE = i32; pub type CDROM_PERFORMANCE_TYPE = i32; #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_PLAY_AUDIO_MSF { pub StartingM: u8, pub StartingS: u8, pub StartingF: u8, pub EndingM: u8, pub EndingS: u8, pub EndingF: u8, } #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_READ_TOC_EX { pub _bitfield: u8, pub SessionTrack: u8, pub Reserved2: u8, pub Reserved3: u8, } pub const CDROM_READ_TOC_EX_FORMAT_ATIP: u32 = 4u32; pub const CDROM_READ_TOC_EX_FORMAT_CDTEXT: u32 = 5u32; pub const CDROM_READ_TOC_EX_FORMAT_FULL_TOC: u32 = 2u32; pub const CDROM_READ_TOC_EX_FORMAT_PMA: u32 = 3u32; pub const CDROM_READ_TOC_EX_FORMAT_SESSION: u32 = 1u32; pub const CDROM_READ_TOC_EX_FORMAT_TOC: u32 = 0u32; #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_SEEK_AUDIO_MSF { pub M: u8, pub S: u8, pub F: u8, } #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_SET_SPEED { pub RequestType: CDROM_SPEED_REQUEST, pub ReadSpeed: u16, pub WriteSpeed: u16, pub RotationControl: WRITE_ROTATION, } #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_SET_STREAMING { pub RequestType: CDROM_SPEED_REQUEST, pub ReadSize: u32, pub ReadTime: u32, pub WriteSize: u32, pub WriteTime: u32, pub StartLba: u32, pub EndLba: u32, pub RotationControl: WRITE_ROTATION, pub RestoreDefaults: bool, pub SetExact: bool, pub RandomAccess: bool, pub Persistent: bool, } #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_SIMPLE_OPC_INFO { pub RequestType: CDROM_OPC_INFO_TYPE, pub Exclude0: bool, pub Exclude1: bool, } pub type CDROM_SPEED_REQUEST = i32; #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_STREAMING_CONTROL { pub RequestType: STREAMING_CONTROL_REQUEST_TYPE, } #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_SUB_Q_DATA_FORMAT { pub Format: u8, pub Track: u8, } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC { pub Length: [u8; 2], pub FirstTrack: u8, pub LastTrack: u8, pub TrackData: [TRACK_DATA; 100], } impl Default for CDROM_TOC { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC_ATIP_DATA { pub Length: [u8; 2], pub Reserved1: u8, pub Reserved2: u8, pub Descriptors: [CDROM_TOC_ATIP_DATA_BLOCK; 1], } impl Default for CDROM_TOC_ATIP_DATA { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC_ATIP_DATA_BLOCK { pub _bitfield1: u8, pub _bitfield2: u8, pub _bitfield3: u8, pub Reserved7: u8, pub LeadInMsf: [u8; 3], pub Reserved8: u8, pub LeadOutMsf: [u8; 3], pub Reserved9: u8, pub A1Values: [u8; 3], pub Reserved10: u8, pub A2Values: [u8; 3], pub Reserved11: u8, pub A3Values: [u8; 3], pub Reserved12: u8, } impl Default for CDROM_TOC_ATIP_DATA_BLOCK { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC_CD_TEXT_DATA { pub Length: [u8; 2], pub Reserved1: u8, pub Reserved2: u8, pub Descriptors: [CDROM_TOC_CD_TEXT_DATA_BLOCK; 1], } impl Default for CDROM_TOC_CD_TEXT_DATA { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC_CD_TEXT_DATA_BLOCK { pub PackType: u8, pub _bitfield1: u8, pub SequenceNumber: u8, pub _bitfield2: u8, pub Anonymous: CDROM_TOC_CD_TEXT_DATA_BLOCK_0, pub CRC: [u8; 2], } impl Default for CDROM_TOC_CD_TEXT_DATA_BLOCK { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub union CDROM_TOC_CD_TEXT_DATA_BLOCK_0 { pub Text: [u8; 12], pub WText: [u16; 6], } impl Default for CDROM_TOC_CD_TEXT_DATA_BLOCK_0 { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC_FULL_TOC_DATA { pub Length: [u8; 2], pub FirstCompleteSession: u8, pub LastCompleteSession: u8, pub Descriptors: [CDROM_TOC_FULL_TOC_DATA_BLOCK; 1], } impl Default for CDROM_TOC_FULL_TOC_DATA { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC_FULL_TOC_DATA_BLOCK { pub SessionNumber: u8, pub _bitfield: u8, pub Reserved1: u8, pub Point: u8, pub MsfExtra: [u8; 3], pub Zero: u8, pub Msf: [u8; 3], } impl Default for CDROM_TOC_FULL_TOC_DATA_BLOCK { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC_PMA_DATA { pub Length: [u8; 2], pub Reserved1: u8, pub Reserved2: u8, pub Descriptors: [CDROM_TOC_FULL_TOC_DATA_BLOCK; 1], } impl Default for CDROM_TOC_PMA_DATA { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_TOC_SESSION_DATA { pub Length: [u8; 2], pub FirstCompleteSession: u8, pub LastCompleteSession: u8, pub TrackData: [TRACK_DATA; 1], } impl Default for CDROM_TOC_SESSION_DATA { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct CDROM_WRITE_SPEED_DESCRIPTOR { pub _bitfield: u8, pub Reserved3: [u8; 3], pub EndLba: [u8; 4], pub ReadSpeed: [u8; 4], pub WriteSpeed: [u8; 4], } impl Default for CDROM_WRITE_SPEED_DESCRIPTOR { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy, Default)] pub struct CDROM_WRITE_SPEED_REQUEST { pub RequestType: CDROM_PERFORMANCE_REQUEST_TYPE, } pub const CD_RAW_READ_C2_SIZE: u32 = 296u32; pub const CD_RAW_READ_SUBCODE_SIZE: u32 = 96u32; pub const CD_RAW_SECTOR_WITH_C2_SIZE: u32 = 2648u32; pub const CD_RAW_SECTOR_WITH_SUBCODE_SIZE: u32 = 2448u32; pub const Cdrom10Nominal20Exceptions: CDROM_PERFORMANCE_TOLERANCE_TYPE = 1i32; pub const CdromCAVRotation: WRITE_ROTATION = 1i32; pub const CdromDefaultRotation: WRITE_ROTATION = 0i32; pub const CdromEntirePerformanceList: CDROM_PERFORMANCE_EXCEPTION_TYPE = 2i32; pub const CdromNominalPerformance: CDROM_PERFORMANCE_EXCEPTION_TYPE = 1i32; pub const CdromPerformanceExceptionsOnly: CDROM_PERFORMANCE_EXCEPTION_TYPE = 3i32; pub const CdromPerformanceRequest: CDROM_PERFORMANCE_REQUEST_TYPE = 1i32; pub const CdromReadPerformance: CDROM_PERFORMANCE_TYPE = 1i32; pub const CdromSetSpeed: CDROM_SPEED_REQUEST = 0i32; pub const CdromSetStreaming: CDROM_SPEED_REQUEST = 1i32; pub const CdromStreamingDisable: STREAMING_CONTROL_REQUEST_TYPE = 1i32; pub const CdromStreamingEnableForReadOnly: STREAMING_CONTROL_REQUEST_TYPE = 2i32; pub const CdromStreamingEnableForReadWrite: STREAMING_CONTROL_REQUEST_TYPE = 4i32; pub const CdromStreamingEnableForWriteOnly: STREAMING_CONTROL_REQUEST_TYPE = 3i32; pub const CdromWritePerformance: CDROM_PERFORMANCE_TYPE = 2i32; pub const CdromWriteSpeedRequest: CDROM_PERFORMANCE_REQUEST_TYPE = 2i32; pub const DIGITAL_COPY_PERMITTED: u32 = 2u32; pub type EXCLUSIVE_ACCESS_REQUEST_TYPE = i32; pub const ExclusiveAccessLockDevice: EXCLUSIVE_ACCESS_REQUEST_TYPE = 1i32; pub const ExclusiveAccessQueryState: EXCLUSIVE_ACCESS_REQUEST_TYPE = 0i32; pub const ExclusiveAccessUnlockDevice: EXCLUSIVE_ACCESS_REQUEST_TYPE = 2i32; pub const IOCTL_CDROM_BASE: i32 = 2i32; pub const IOCTL_CDROM_CHECK_VERIFY: u32 = 149504u32; pub const IOCTL_CDROM_CURRENT_POSITION: u32 = 1u32; pub const IOCTL_CDROM_DISK_TYPE: u32 = 131136u32; pub const IOCTL_CDROM_EJECT_MEDIA: u32 = 149512u32; pub const IOCTL_CDROM_ENABLE_STREAMING: u32 = 147560u32; pub const IOCTL_CDROM_EXCLUSIVE_ACCESS: u32 = 180316u32; pub const IOCTL_CDROM_FIND_NEW_DEVICES: u32 = 149528u32; pub const IOCTL_CDROM_GET_CONFIGURATION: u32 = 147544u32; pub const IOCTL_CDROM_GET_CONTROL: u32 = 147508u32; pub const IOCTL_CDROM_GET_DRIVE_GEOMETRY: u32 = 147532u32; pub const IOCTL_CDROM_GET_DRIVE_GEOMETRY_EX: u32 = 147536u32; pub const IOCTL_CDROM_GET_INQUIRY_DATA: u32 = 147556u32; pub const IOCTL_CDROM_GET_LAST_SESSION: u32 = 147512u32; pub const IOCTL_CDROM_GET_PERFORMANCE: u32 = 147568u32; pub const IOCTL_CDROM_GET_VOLUME: u32 = 147476u32; pub const IOCTL_CDROM_LOAD_MEDIA: u32 = 149516u32; pub const IOCTL_CDROM_MEDIA_CATALOG: u32 = 2u32; pub const IOCTL_CDROM_MEDIA_REMOVAL: u32 = 149508u32; pub const IOCTL_CDROM_PAUSE_AUDIO: u32 = 147468u32; pub const IOCTL_CDROM_PLAY_AUDIO_MSF: u32 = 147480u32; pub const IOCTL_CDROM_RAW_READ: u32 = 147518u32; pub const IOCTL_CDROM_READ_Q_CHANNEL: u32 = 147500u32; pub const IOCTL_CDROM_READ_TOC: u32 = 147456u32; pub const IOCTL_CDROM_READ_TOC_EX: u32 = 147540u32; pub const IOCTL_CDROM_RELEASE: u32 = 149524u32; pub const IOCTL_CDROM_RESERVE: u32 = 149520u32; pub const IOCTL_CDROM_RESUME_AUDIO: u32 = 147472u32; pub const IOCTL_CDROM_SEEK_AUDIO_MSF: u32 = 147460u32; pub const IOCTL_CDROM_SEND_OPC_INFORMATION: u32 = 180332u32; pub const IOCTL_CDROM_SET_SPEED: u32 = 147552u32; pub const IOCTL_CDROM_SET_VOLUME: u32 = 147496u32; pub const IOCTL_CDROM_SIMBAD: u32 = 147468u32; pub const IOCTL_CDROM_STOP_AUDIO: u32 = 147464u32; pub const IOCTL_CDROM_SUB_Q_CHANNEL: u32 = 0u32; pub const IOCTL_CDROM_TRACK_ISRC: u32 = 3u32; pub const IOCTL_CDROM_UNLOAD_DRIVER: u32 = 151560u32; pub const MAXIMUM_CDROM_INQUIRY_SIZE: u32 = 260u32; pub const MAXIMUM_CDROM_SIZE: u32 = 804u32; pub const MAXIMUM_NUMBER_TRACKS: u32 = 100u32; pub type MEDIA_BLANK_TYPE = i32; pub const MINIMUM_CDROM_INQUIRY_SIZE: u32 = 36u32; pub const MINIMUM_CDROM_READ_TOC_EX_SIZE: u32 = 2u32; pub const MediaBlankTypeEraseLastSession: MEDIA_BLANK_TYPE = 6i32; pub const MediaBlankTypeFull: MEDIA_BLANK_TYPE = 0i32; pub const MediaBlankTypeIncompleteTrack: MEDIA_BLANK_TYPE = 2i32; pub const MediaBlankTypeMinimal: MEDIA_BLANK_TYPE = 1i32; pub const MediaBlankTypeTrackTail: MEDIA_BLANK_TYPE = 4i32; pub const MediaBlankTypeUncloseLastSession: MEDIA_BLANK_TYPE = 5i32; pub const MediaBlankTypeUnreserveLastTrack: MEDIA_BLANK_TYPE = 3i32; pub const OBSOLETE_IOCTL_CDROM_GET_CONTROL: u32 = 147508u32; #[repr(C)] #[derive(Clone, Copy, Default)] pub struct RAW_READ_INFO { pub DiskOffset: i64, pub SectorCount: u32, pub TrackMode: TRACK_MODE_TYPE, } pub const RawWithC2: TRACK_MODE_TYPE = 4i32; pub const RawWithC2AndSubCode: TRACK_MODE_TYPE = 3i32; pub const RawWithSubCode: TRACK_MODE_TYPE = 5i32; pub type STREAMING_CONTROL_REQUEST_TYPE = i32; #[repr(C)] #[derive(Clone, Copy)] pub union SUB_Q_CHANNEL_DATA { pub CurrentPosition: SUB_Q_CURRENT_POSITION, pub MediaCatalog: SUB_Q_MEDIA_CATALOG_NUMBER, pub TrackIsrc: SUB_Q_TRACK_ISRC, } impl Default for SUB_Q_CHANNEL_DATA { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct SUB_Q_CURRENT_POSITION { pub Header: SUB_Q_HEADER, pub FormatCode: u8, pub _bitfield: u8, pub TrackNumber: u8, pub IndexNumber: u8, pub AbsoluteAddress: [u8; 4], pub TrackRelativeAddress: [u8; 4], } impl Default for SUB_Q_CURRENT_POSITION { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct SUB_Q_HEADER { pub Reserved: u8, pub AudioStatus: u8, pub DataLength: [u8; 2], } impl Default for SUB_Q_HEADER { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct SUB_Q_MEDIA_CATALOG_NUMBER { pub Header: SUB_Q_HEADER, pub FormatCode: u8, pub Reserved: [u8; 3], pub _bitfield: u8, pub MediaCatalog: [u8; 15], } impl Default for SUB_Q_MEDIA_CATALOG_NUMBER { fn default() -> Self { unsafe { core::mem::zeroed() } } } #[repr(C)] #[derive(Clone, Copy)] pub struct SUB_Q_TRACK_ISRC { pub Header: SUB_Q_HEADER, pub FormatCode: u8, pub Reserved0: u8, pub Track: u8, pub Reserved1: u8, pub _bitfield: u8, pub TrackIsrc: [u8; 15], } impl Default for SUB_Q_TRACK_ISRC { fn default() -> Self { unsafe { core::mem::zeroed() } } } pub const SimpleOpcInfo: CDROM_OPC_INFO_TYPE = 1i32; #[repr(C)] #[derive(Clone, Copy)] pub struct TRACK_DATA { pub Reserved: u8, pub _bitfield: u8, pub TrackNumber: u8, pub Reserved1: u8, pub Address: [u8; 4], } impl Default for TRACK_DATA { fn default() -> Self { unsafe { core::mem::zeroed() } } } pub type TRACK_MODE_TYPE = i32; pub const TWO_FOUR_CHANNEL_AUDIO: u32 = 8u32; #[repr(C)] #[derive(Clone, Copy)] pub struct VOLUME_CONTROL { pub PortVolume: [u8; 4], } impl Default for VOLUME_CONTROL { fn default() -> Self { unsafe { core::mem::zeroed() } } } pub type WRITE_ROTATION = i32; pub const XAForm2: TRACK_MODE_TYPE = 1i32; pub const YellowMode2: TRACK_MODE_TYPE = 0i32;