ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntddcdrm.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.