Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ntddcdrm.h
00001 /* 00002 * ntddcdrm.h 00003 * 00004 * CDROM IOCTL interface. 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __NTDDCDRM_H 00024 #define __NTDDCDRM_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 #include "ntddstor.h" 00036 00037 #define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM 00038 00039 #define IOCTL_CDROM_CHECK_VERIFY \ 00040 CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) 00041 00042 #define IOCTL_CDROM_FIND_NEW_DEVICES \ 00043 CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) 00044 00045 #define IOCTL_CDROM_GET_CONTROL \ 00046 CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS) 00047 00048 #define IOCTL_CDROM_GET_DRIVE_GEOMETRY \ 00049 CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS) 00050 00051 #define IOCTL_CDROM_GET_LAST_SESSION \ 00052 CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS) 00053 00054 #define IOCTL_CDROM_GET_VOLUME \ 00055 CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS) 00056 00057 #define IOCTL_CDROM_PAUSE_AUDIO \ 00058 CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) 00059 00060 #define IOCTL_CDROM_PLAY_AUDIO_MSF \ 00061 CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS) 00062 00063 #define IOCTL_CDROM_RAW_READ \ 00064 CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT, FILE_READ_ACCESS) 00065 00066 #define IOCTL_CDROM_READ_Q_CHANNEL \ 00067 CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS) 00068 00069 #define IOCTL_CDROM_READ_TOC \ 00070 CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS) 00071 00072 #define IOCTL_CDROM_READ_TOC_EX \ 00073 CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS) 00074 00075 #define IOCTL_CDROM_RESUME_AUDIO \ 00076 CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) 00077 00078 #define IOCTL_CDROM_SEEK_AUDIO_MSF \ 00079 CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) 00080 00081 #define IOCTL_CDROM_SET_VOLUME \ 00082 CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS) 00083 00084 #define IOCTL_CDROM_SIMBAD \ 00085 CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS) 00086 00087 #define IOCTL_CDROM_STOP_AUDIO \ 00088 CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) 00089 00090 00091 #define MAXIMUM_NUMBER_TRACKS 100 00092 #define MAXIMUM_CDROM_SIZE 804 00093 #define MINIMUM_CDROM_READ_TOC_EX_SIZE 2 00094 00095 typedef struct _TRACK_DATA { 00096 UCHAR Reserved; 00097 UCHAR Control : 4; 00098 UCHAR Adr : 4; 00099 UCHAR TrackNumber; 00100 UCHAR Reserved1; 00101 UCHAR Address[4]; 00102 } TRACK_DATA, *PTRACK_DATA; 00103 00104 /* CDROM_DISK_DATA.DiskData flags */ 00105 #define CDROM_DISK_AUDIO_TRACK 0x00000001 00106 #define CDROM_DISK_DATA_TRACK 0x00000002 00107 00108 typedef struct _CDROM_DISK_DATA { 00109 ULONG DiskData; 00110 } CDROM_DISK_DATA, *PCDROM_DISK_DATA; 00111 00112 typedef struct _CDROM_PLAY_AUDIO_MSF { 00113 UCHAR StartingM; 00114 UCHAR StartingS; 00115 UCHAR StartingF; 00116 UCHAR EndingM; 00117 UCHAR EndingS; 00118 UCHAR EndingF; 00119 } CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF; 00120 00121 /* CDROM_READ_TOC_EX.Format constants */ 00122 #define CDROM_READ_TOC_EX_FORMAT_TOC 0x00 00123 #define CDROM_READ_TOC_EX_FORMAT_SESSION 0x01 00124 #define CDROM_READ_TOC_EX_FORMAT_FULL_TOC 0x02 00125 #define CDROM_READ_TOC_EX_FORMAT_PMA 0x03 00126 #define CDROM_READ_TOC_EX_FORMAT_ATIP 0x04 00127 #define CDROM_READ_TOC_EX_FORMAT_CDTEXT 0x05 00128 00129 typedef struct _CDROM_READ_TOC_EX { 00130 UCHAR Format : 4; 00131 UCHAR Reserved1 : 3; 00132 UCHAR Msf : 1; 00133 UCHAR SessionTrack; 00134 UCHAR Reserved2; 00135 UCHAR Reserved3; 00136 } CDROM_READ_TOC_EX, *PCDROM_READ_TOC_EX; 00137 00138 typedef struct _CDROM_SEEK_AUDIO_MSF { 00139 UCHAR M; 00140 UCHAR S; 00141 UCHAR F; 00142 } CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF; 00143 00144 /* CDROM_SUB_Q_DATA_FORMAT.Format constants */ 00145 #define IOCTL_CDROM_SUB_Q_CHANNEL 0x00 00146 #define IOCTL_CDROM_CURRENT_POSITION 0x01 00147 #define IOCTL_CDROM_MEDIA_CATALOG 0x02 00148 #define IOCTL_CDROM_TRACK_ISRC 0x03 00149 00150 typedef struct _CDROM_SUB_Q_DATA_FORMAT { 00151 UCHAR Format; 00152 UCHAR Track; 00153 } CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT; 00154 00155 typedef struct _CDROM_TOC { 00156 UCHAR Length[2]; 00157 UCHAR FirstTrack; 00158 UCHAR LastTrack; 00159 TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS]; 00160 } CDROM_TOC, *PCDROM_TOC; 00161 00162 #define CDROM_TOC_SIZE sizeof(CDROM_TOC) 00163 00164 typedef struct _CDROM_TOC_ATIP_DATA_BLOCK { 00165 UCHAR CdrwReferenceSpeed : 3; 00166 UCHAR Reserved3 : 1; 00167 UCHAR WritePower : 3; 00168 UCHAR True1 : 1; 00169 UCHAR Reserved4 : 6; 00170 UCHAR UnrestrictedUse : 1; 00171 UCHAR Reserved5 : 1; 00172 UCHAR A3Valid : 1; 00173 UCHAR A2Valid : 1; 00174 UCHAR A1Valid : 1; 00175 UCHAR Reserved6 : 3; 00176 UCHAR IsCdrw : 1; 00177 UCHAR True2 : 1; 00178 UCHAR Reserved7; 00179 UCHAR LeadInMsf[3]; 00180 UCHAR Reserved8; 00181 UCHAR LeadOutMsf[3]; 00182 UCHAR Reserved9; 00183 UCHAR A1Values[3]; 00184 UCHAR Reserved10; 00185 UCHAR A2Values[3]; 00186 UCHAR Reserved11; 00187 UCHAR A3Values[3]; 00188 UCHAR Reserved12; 00189 } CDROM_TOC_ATIP_DATA_BLOCK, *PCDROM_TOC_ATIP_DATA_BLOCK; 00190 00191 typedef struct _CDROM_TOC_ATIP_DATA { 00192 UCHAR Length[2]; 00193 UCHAR Reserved1; 00194 UCHAR Reserved2; 00195 CDROM_TOC_ATIP_DATA_BLOCK Descriptors[0]; 00196 } CDROM_TOC_ATIP_DATA, *PCDROM_TOC_ATIP_DATA; 00197 00198 /* CDROM_TOC_CD_TEXT_DATA_BLOCK.PackType constants */ 00199 #define CDROM_CD_TEXT_PACK_ALBUM_NAME 0x80 00200 #define CDROM_CD_TEXT_PACK_PERFORMER 0x81 00201 #define CDROM_CD_TEXT_PACK_SONGWRITER 0x82 00202 #define CDROM_CD_TEXT_PACK_COMPOSER 0x83 00203 #define CDROM_CD_TEXT_PACK_ARRANGER 0x84 00204 #define CDROM_CD_TEXT_PACK_MESSAGES 0x85 00205 #define CDROM_CD_TEXT_PACK_DISC_ID 0x86 00206 #define CDROM_CD_TEXT_PACK_GENRE 0x87 00207 #define CDROM_CD_TEXT_PACK_TOC_INFO 0x88 00208 #define CDROM_CD_TEXT_PACK_TOC_INFO2 0x89 00209 #define CDROM_CD_TEXT_PACK_UPC_EAN 0x8e 00210 #define CDROM_CD_TEXT_PACK_SIZE_INFO 0x8f 00211 00212 typedef struct _CDROM_TOC_CD_TEXT_DATA_BLOCK { 00213 UCHAR PackType; 00214 UCHAR TrackNumber : 7; 00215 UCHAR ExtensionFlag : 1; 00216 UCHAR SequenceNumber; 00217 UCHAR CharacterPosition : 4; 00218 UCHAR BlockNumber : 3; 00219 UCHAR Unicode : 1; 00220 _ANONYMOUS_UNION union { 00221 UCHAR Text[12]; 00222 WCHAR WText[6]; 00223 } DUMMYUNIONNAME; 00224 UCHAR CRC[2]; 00225 } CDROM_TOC_CD_TEXT_DATA_BLOCK, *PCDROM_TOC_CD_TEXT_DATA_BLOCK; 00226 00227 typedef struct _CDROM_TOC_CD_TEXT_DATA { 00228 UCHAR Length[2]; 00229 UCHAR Reserved1; 00230 UCHAR Reserved2; 00231 CDROM_TOC_CD_TEXT_DATA_BLOCK Descriptors[0]; 00232 } CDROM_TOC_CD_TEXT_DATA, *PCDROM_TOC_CD_TEXT_DATA; 00233 00234 /* CDROM_TOC_FULL_TOC_DATA_BLOCK.Adr constants */ 00235 #define ADR_NO_MODE_INFORMATION 0x0 00236 #define ADR_ENCODES_CURRENT_POSITION 0x1 00237 #define ADR_ENCODES_MEDIA_CATALOG 0x2 00238 #define ADR_ENCODES_ISRC 0x3 00239 00240 typedef struct _CDROM_TOC_FULL_TOC_DATA_BLOCK { 00241 UCHAR SessionNumber; 00242 UCHAR Control : 4; 00243 UCHAR Adr : 4; 00244 UCHAR Reserved1; 00245 UCHAR Point; 00246 UCHAR MsfExtra[3]; 00247 UCHAR Zero; 00248 UCHAR Msf[3]; 00249 } CDROM_TOC_FULL_TOC_DATA_BLOCK, *PCDROM_TOC_FULL_TOC_DATA_BLOCK; 00250 00251 typedef struct _CDROM_TOC_FULL_TOC_DATA { 00252 UCHAR Length[2]; 00253 UCHAR FirstCompleteSession; 00254 UCHAR LastCompleteSession; 00255 CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0]; 00256 } CDROM_TOC_FULL_TOC_DATA, *PCDROM_TOC_FULL_TOC_DATA; 00257 00258 typedef struct _CDROM_TOC_PMA_DATA { 00259 UCHAR Length[2]; 00260 UCHAR Reserved1; 00261 UCHAR Reserved2; 00262 CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0]; 00263 } CDROM_TOC_PMA_DATA, *PCDROM_TOC_PMA_DATA; 00264 00265 /* SUB_Q_HEADER.AudioStatus constants */ 00266 #define AUDIO_STATUS_NOT_SUPPORTED 0x00 00267 #define AUDIO_STATUS_IN_PROGRESS 0x11 00268 #define AUDIO_STATUS_PAUSED 0x12 00269 #define AUDIO_STATUS_PLAY_COMPLETE 0x13 00270 #define AUDIO_STATUS_PLAY_ERROR 0x14 00271 #define AUDIO_STATUS_NO_STATUS 0x15 00272 00273 typedef struct _SUB_Q_HEADER { 00274 UCHAR Reserved; 00275 UCHAR AudioStatus; 00276 UCHAR DataLength[2]; 00277 } SUB_Q_HEADER, *PSUB_Q_HEADER; 00278 00279 typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER { 00280 SUB_Q_HEADER Header; 00281 UCHAR FormatCode; 00282 UCHAR Reserved[3]; 00283 UCHAR Reserved1 : 7; 00284 UCHAR Mcval :1; 00285 UCHAR MediaCatalog[15]; 00286 } SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER; 00287 00288 typedef struct _SUB_Q_TRACK_ISRC { 00289 SUB_Q_HEADER Header; 00290 UCHAR FormatCode; 00291 UCHAR Reserved0; 00292 UCHAR Track; 00293 UCHAR Reserved1; 00294 UCHAR Reserved2 : 7; 00295 UCHAR Tcval : 1; 00296 UCHAR TrackIsrc[15]; 00297 } SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC; 00298 00299 typedef struct _SUB_Q_CURRENT_POSITION { 00300 SUB_Q_HEADER Header; 00301 UCHAR FormatCode; 00302 UCHAR Control : 4; 00303 UCHAR ADR : 4; 00304 UCHAR TrackNumber; 00305 UCHAR IndexNumber; 00306 UCHAR AbsoluteAddress[4]; 00307 UCHAR TrackRelativeAddress[4]; 00308 } SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION; 00309 00310 typedef union _SUB_Q_CHANNEL_DATA { 00311 SUB_Q_CURRENT_POSITION CurrentPosition; 00312 SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog; 00313 SUB_Q_TRACK_ISRC TrackIsrc; 00314 } SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA; 00315 00316 /* CDROM_AUDIO_CONTROL.LbaFormat constants */ 00317 #define AUDIO_WITH_PREEMPHASIS 0x1 00318 #define DIGITAL_COPY_PERMITTED 0x2 00319 #define AUDIO_DATA_TRACK 0x4 00320 #define TWO_FOUR_CHANNEL_AUDIO 0x8 00321 00322 typedef struct _CDROM_AUDIO_CONTROL { 00323 UCHAR LbaFormat; 00324 USHORT LogicalBlocksPerSecond; 00325 } CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL; 00326 00327 typedef struct _VOLUME_CONTROL { 00328 UCHAR PortVolume[4]; 00329 } VOLUME_CONTROL, *PVOLUME_CONTROL; 00330 00331 typedef enum _TRACK_MODE_TYPE { 00332 YellowMode2, 00333 XAForm2, 00334 CDDA 00335 } TRACK_MODE_TYPE, *PTRACK_MODE_TYPE; 00336 00337 typedef struct __RAW_READ_INFO { 00338 LARGE_INTEGER DiskOffset; 00339 ULONG SectorCount; 00340 TRACK_MODE_TYPE TrackMode; 00341 } RAW_READ_INFO, *PRAW_READ_INFO; 00342 00343 #ifdef __cplusplus 00344 } 00345 #endif 00346 00347 #endif /* __NTDDCDRM_H */
Generated on Tue Jul 12 2022 19:59:54 by
