Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenntddcdrm.h
Go to the documentation of this file.
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_ 00024 #define _NTDDCDRM_ 00025 00026 #include "ntddstor.h" 00027 00028 #ifdef __cplusplus 00029 extern "C" { 00030 #endif 00031 00032 #define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM 00033 00034 #define IOCTL_CDROM_CHECK_VERIFY \ 00035 CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) 00036 00037 #define IOCTL_CDROM_FIND_NEW_DEVICES \ 00038 CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) 00039 00040 #define IOCTL_CDROM_GET_CONFIGURATION \ 00041 CTL_CODE(IOCTL_CDROM_BASE, 0x0016, METHOD_BUFFERED, FILE_READ_ACCESS) 00042 00043 #define IOCTL_CDROM_GET_CONTROL \ 00044 CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS) 00045 00046 #define IOCTL_CDROM_GET_DRIVE_GEOMETRY \ 00047 CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS) 00048 00049 #define IOCTL_CDROM_GET_DRIVE_GEOMETRY_EX \ 00050 CTL_CODE(IOCTL_CDROM_BASE, 0x0014, METHOD_BUFFERED, FILE_READ_ACCESS) 00051 00052 #define IOCTL_CDROM_GET_LAST_SESSION \ 00053 CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS) 00054 00055 #define IOCTL_CDROM_GET_VOLUME \ 00056 CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS) 00057 00058 #define IOCTL_CDROM_PAUSE_AUDIO \ 00059 CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) 00060 00061 #define IOCTL_CDROM_PLAY_AUDIO_MSF \ 00062 CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS) 00063 00064 #define IOCTL_CDROM_RAW_READ \ 00065 CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT, FILE_READ_ACCESS) 00066 00067 #define IOCTL_CDROM_DISK_TYPE \ 00068 CTL_CODE(IOCTL_CDROM_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS) 00069 00070 #define IOCTL_CDROM_READ_Q_CHANNEL \ 00071 CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS) 00072 00073 #define IOCTL_CDROM_READ_TOC \ 00074 CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS) 00075 00076 #define IOCTL_CDROM_READ_TOC_EX \ 00077 CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS) 00078 00079 #define IOCTL_CDROM_RESUME_AUDIO \ 00080 CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) 00081 00082 #define IOCTL_CDROM_SEEK_AUDIO_MSF \ 00083 CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) 00084 00085 #define IOCTL_CDROM_SET_VOLUME \ 00086 CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS) 00087 00088 #define IOCTL_CDROM_SIMBAD \ 00089 CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS) 00090 00091 #define IOCTL_CDROM_STOP_AUDIO \ 00092 CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) 00093 00094 00095 #define MAXIMUM_NUMBER_TRACKS 100 00096 #define MAXIMUM_CDROM_SIZE 804 00097 #define MINIMUM_CDROM_READ_TOC_EX_SIZE 2 00098 00099 typedef struct _TRACK_DATA { 00100 UCHAR Reserved; 00101 UCHAR Control : 4; 00102 UCHAR Adr : 4; 00103 UCHAR TrackNumber; 00104 UCHAR Reserved1; 00105 UCHAR Address[4]; 00106 } TRACK_DATA, *PTRACK_DATA; 00107 00108 /* CDROM_DISK_DATA.DiskData flags */ 00109 #define CDROM_DISK_AUDIO_TRACK 0x00000001 00110 #define CDROM_DISK_DATA_TRACK 0x00000002 00111 00112 typedef struct _CDROM_DISK_DATA { 00113 ULONG DiskData; 00114 } CDROM_DISK_DATA, *PCDROM_DISK_DATA; 00115 00116 typedef struct _CDROM_PLAY_AUDIO_MSF { 00117 UCHAR StartingM; 00118 UCHAR StartingS; 00119 UCHAR StartingF; 00120 UCHAR EndingM; 00121 UCHAR EndingS; 00122 UCHAR EndingF; 00123 } CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF; 00124 00125 /* CDROM_READ_TOC_EX.Format constants */ 00126 #define CDROM_READ_TOC_EX_FORMAT_TOC 0x00 00127 #define CDROM_READ_TOC_EX_FORMAT_SESSION 0x01 00128 #define CDROM_READ_TOC_EX_FORMAT_FULL_TOC 0x02 00129 #define CDROM_READ_TOC_EX_FORMAT_PMA 0x03 00130 #define CDROM_READ_TOC_EX_FORMAT_ATIP 0x04 00131 #define CDROM_READ_TOC_EX_FORMAT_CDTEXT 0x05 00132 00133 typedef struct _CDROM_READ_TOC_EX { 00134 UCHAR Format : 4; 00135 UCHAR Reserved1 : 3; 00136 UCHAR Msf : 1; 00137 UCHAR SessionTrack; 00138 UCHAR Reserved2; 00139 UCHAR Reserved3; 00140 } CDROM_READ_TOC_EX, *PCDROM_READ_TOC_EX; 00141 00142 typedef struct _CDROM_SEEK_AUDIO_MSF { 00143 UCHAR M; 00144 UCHAR S; 00145 UCHAR F; 00146 } CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF; 00147 00148 /* CDROM_SUB_Q_DATA_FORMAT.Format constants */ 00149 #define IOCTL_CDROM_SUB_Q_CHANNEL 0x00 00150 #define IOCTL_CDROM_CURRENT_POSITION 0x01 00151 #define IOCTL_CDROM_MEDIA_CATALOG 0x02 00152 #define IOCTL_CDROM_TRACK_ISRC 0x03 00153 00154 typedef struct _CDROM_SUB_Q_DATA_FORMAT { 00155 UCHAR Format; 00156 UCHAR Track; 00157 } CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT; 00158 00159 typedef struct _CDROM_TOC { 00160 UCHAR Length[2]; 00161 UCHAR FirstTrack; 00162 UCHAR LastTrack; 00163 TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS]; 00164 } CDROM_TOC, *PCDROM_TOC; 00165 00166 #define CDROM_TOC_SIZE sizeof(CDROM_TOC) 00167 00168 typedef struct _CDROM_TOC_SESSION_DATA { 00169 UCHAR Length[2]; 00170 UCHAR FirstCompleteSession; 00171 UCHAR LastCompleteSession; 00172 TRACK_DATA TrackData[1]; 00173 } CDROM_TOC_SESSION_DATA, *PCDROM_TOC_SESSION_DATA; 00174 00175 typedef struct _CDROM_TOC_ATIP_DATA_BLOCK { 00176 UCHAR CdrwReferenceSpeed : 3; 00177 UCHAR Reserved3 : 1; 00178 UCHAR WritePower : 3; 00179 UCHAR True1 : 1; 00180 UCHAR Reserved4 : 6; 00181 UCHAR UnrestrictedUse : 1; 00182 UCHAR Reserved5 : 1; 00183 UCHAR A3Valid : 1; 00184 UCHAR A2Valid : 1; 00185 UCHAR A1Valid : 1; 00186 UCHAR Reserved6 : 3; 00187 UCHAR IsCdrw : 1; 00188 UCHAR True2 : 1; 00189 UCHAR Reserved7; 00190 UCHAR LeadInMsf[3]; 00191 UCHAR Reserved8; 00192 UCHAR LeadOutMsf[3]; 00193 UCHAR Reserved9; 00194 UCHAR A1Values[3]; 00195 UCHAR Reserved10; 00196 UCHAR A2Values[3]; 00197 UCHAR Reserved11; 00198 UCHAR A3Values[3]; 00199 UCHAR Reserved12; 00200 } CDROM_TOC_ATIP_DATA_BLOCK, *PCDROM_TOC_ATIP_DATA_BLOCK; 00201 00202 typedef struct _CDROM_TOC_ATIP_DATA { 00203 UCHAR Length[2]; 00204 UCHAR Reserved1; 00205 UCHAR Reserved2; 00206 CDROM_TOC_ATIP_DATA_BLOCK Descriptors[0]; 00207 } CDROM_TOC_ATIP_DATA, *PCDROM_TOC_ATIP_DATA; 00208 00209 /* CDROM_TOC_CD_TEXT_DATA_BLOCK.PackType constants */ 00210 #define CDROM_CD_TEXT_PACK_ALBUM_NAME 0x80 00211 #define CDROM_CD_TEXT_PACK_PERFORMER 0x81 00212 #define CDROM_CD_TEXT_PACK_SONGWRITER 0x82 00213 #define CDROM_CD_TEXT_PACK_COMPOSER 0x83 00214 #define CDROM_CD_TEXT_PACK_ARRANGER 0x84 00215 #define CDROM_CD_TEXT_PACK_MESSAGES 0x85 00216 #define CDROM_CD_TEXT_PACK_DISC_ID 0x86 00217 #define CDROM_CD_TEXT_PACK_GENRE 0x87 00218 #define CDROM_CD_TEXT_PACK_TOC_INFO 0x88 00219 #define CDROM_CD_TEXT_PACK_TOC_INFO2 0x89 00220 #define CDROM_CD_TEXT_PACK_UPC_EAN 0x8e 00221 #define CDROM_CD_TEXT_PACK_SIZE_INFO 0x8f 00222 00223 typedef struct _CDROM_TOC_CD_TEXT_DATA_BLOCK { 00224 UCHAR PackType; 00225 UCHAR TrackNumber : 7; 00226 UCHAR ExtensionFlag : 1; 00227 UCHAR SequenceNumber; 00228 UCHAR CharacterPosition : 4; 00229 UCHAR BlockNumber : 3; 00230 UCHAR Unicode : 1; 00231 _ANONYMOUS_UNION union { 00232 UCHAR Text[12]; 00233 WCHAR WText[6]; 00234 } DUMMYUNIONNAME; 00235 UCHAR CRC[2]; 00236 } CDROM_TOC_CD_TEXT_DATA_BLOCK, *PCDROM_TOC_CD_TEXT_DATA_BLOCK; 00237 00238 typedef struct _CDROM_TOC_CD_TEXT_DATA { 00239 UCHAR Length[2]; 00240 UCHAR Reserved1; 00241 UCHAR Reserved2; 00242 CDROM_TOC_CD_TEXT_DATA_BLOCK Descriptors[0]; 00243 } CDROM_TOC_CD_TEXT_DATA, *PCDROM_TOC_CD_TEXT_DATA; 00244 00245 /* CDROM_TOC_FULL_TOC_DATA_BLOCK.Adr constants */ 00246 #define ADR_NO_MODE_INFORMATION 0x0 00247 #define ADR_ENCODES_CURRENT_POSITION 0x1 00248 #define ADR_ENCODES_MEDIA_CATALOG 0x2 00249 #define ADR_ENCODES_ISRC 0x3 00250 00251 typedef struct _CDROM_TOC_FULL_TOC_DATA_BLOCK { 00252 UCHAR SessionNumber; 00253 UCHAR Control : 4; 00254 UCHAR Adr : 4; 00255 UCHAR Reserved1; 00256 UCHAR Point; 00257 UCHAR MsfExtra[3]; 00258 UCHAR Zero; 00259 UCHAR Msf[3]; 00260 } CDROM_TOC_FULL_TOC_DATA_BLOCK, *PCDROM_TOC_FULL_TOC_DATA_BLOCK; 00261 00262 typedef struct _CDROM_TOC_FULL_TOC_DATA { 00263 UCHAR Length[2]; 00264 UCHAR FirstCompleteSession; 00265 UCHAR LastCompleteSession; 00266 CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0]; 00267 } CDROM_TOC_FULL_TOC_DATA, *PCDROM_TOC_FULL_TOC_DATA; 00268 00269 typedef struct _CDROM_TOC_PMA_DATA { 00270 UCHAR Length[2]; 00271 UCHAR Reserved1; 00272 UCHAR Reserved2; 00273 CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0]; 00274 } CDROM_TOC_PMA_DATA, *PCDROM_TOC_PMA_DATA; 00275 00276 /* SUB_Q_HEADER.AudioStatus constants */ 00277 #define AUDIO_STATUS_NOT_SUPPORTED 0x00 00278 #define AUDIO_STATUS_IN_PROGRESS 0x11 00279 #define AUDIO_STATUS_PAUSED 0x12 00280 #define AUDIO_STATUS_PLAY_COMPLETE 0x13 00281 #define AUDIO_STATUS_PLAY_ERROR 0x14 00282 #define AUDIO_STATUS_NO_STATUS 0x15 00283 00284 typedef struct _SUB_Q_HEADER { 00285 UCHAR Reserved; 00286 UCHAR AudioStatus; 00287 UCHAR DataLength[2]; 00288 } SUB_Q_HEADER, *PSUB_Q_HEADER; 00289 00290 typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER { 00291 SUB_Q_HEADER Header; 00292 UCHAR FormatCode; 00293 UCHAR Reserved[3]; 00294 UCHAR Reserved1 : 7; 00295 UCHAR Mcval :1; 00296 UCHAR MediaCatalog[15]; 00297 } SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER; 00298 00299 typedef struct _SUB_Q_TRACK_ISRC { 00300 SUB_Q_HEADER Header; 00301 UCHAR FormatCode; 00302 UCHAR Reserved0; 00303 UCHAR Track; 00304 UCHAR Reserved1; 00305 UCHAR Reserved2 : 7; 00306 UCHAR Tcval : 1; 00307 UCHAR TrackIsrc[15]; 00308 } SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC; 00309 00310 typedef struct _SUB_Q_CURRENT_POSITION { 00311 SUB_Q_HEADER Header; 00312 UCHAR FormatCode; 00313 UCHAR Control : 4; 00314 UCHAR ADR : 4; 00315 UCHAR TrackNumber; 00316 UCHAR IndexNumber; 00317 UCHAR AbsoluteAddress[4]; 00318 UCHAR TrackRelativeAddress[4]; 00319 } SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION; 00320 00321 typedef union _SUB_Q_CHANNEL_DATA { 00322 SUB_Q_CURRENT_POSITION CurrentPosition; 00323 SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog; 00324 SUB_Q_TRACK_ISRC TrackIsrc; 00325 } SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA; 00326 00327 /* CDROM_AUDIO_CONTROL.LbaFormat constants */ 00328 #define AUDIO_WITH_PREEMPHASIS 0x1 00329 #define DIGITAL_COPY_PERMITTED 0x2 00330 #define AUDIO_DATA_TRACK 0x4 00331 #define TWO_FOUR_CHANNEL_AUDIO 0x8 00332 00333 typedef struct _CDROM_AUDIO_CONTROL { 00334 UCHAR LbaFormat; 00335 USHORT LogicalBlocksPerSecond; 00336 } CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL; 00337 00338 typedef struct _VOLUME_CONTROL { 00339 UCHAR PortVolume[4]; 00340 } VOLUME_CONTROL, *PVOLUME_CONTROL; 00341 00342 typedef enum _TRACK_MODE_TYPE { 00343 YellowMode2, 00344 XAForm2, 00345 CDDA 00346 } TRACK_MODE_TYPE, *PTRACK_MODE_TYPE; 00347 00348 typedef struct __RAW_READ_INFO { 00349 LARGE_INTEGER DiskOffset; 00350 ULONG SectorCount; 00351 TRACK_MODE_TYPE TrackMode; 00352 } RAW_READ_INFO, *PRAW_READ_INFO; 00353 00354 #ifdef __cplusplus 00355 } 00356 #endif 00357 00358 #endif /* _NTDDCDRM_ */ Generated on Sun May 27 2012 04:32:05 for ReactOS by
1.7.6.1
|