Annotation of ntddk/src/scsi/inc/ntddcdrm.h, revision 1.1.1.1

1.1       root        1: /*++ BUILD Version: 0001    // Increment this if a change has global effects
                      2: 
                      3: Copyright (c) 1990-1993  Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
                      7:     ntddcdrm.h
                      8: 
                      9: Abstract:
                     10: 
                     11:     This module contains structures and definitions
                     12:     associated with CDROM IOCTls.
                     13: 
                     14: Author:
                     15: 
                     16:     Mike Glass
                     17: 
                     18: Revision History:
                     19: 
                     20: --*/
                     21: 
                     22: //
                     23: // NtDeviceIoControlFile IoControlCode values for this device.
                     24: //
                     25: // Warning:  Remember that the low two bits of the code specify how the
                     26: //           buffers are passed to the driver!
                     27: //
                     28: 
                     29: #define IOCTL_CDROM_BASE                 FILE_DEVICE_CD_ROM
                     30: 
                     31: #define IOCTL_CDROM_UNLOAD_DRIVER        CTL_CODE(IOCTL_CDROM_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
                     32: 
                     33: //
                     34: // CDROM Audio Device Control Functions
                     35: //
                     36: 
                     37: #define IOCTL_CDROM_READ_TOC     CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
                     38: #define IOCTL_CDROM_GET_CONTROL  CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS)
                     39: #define IOCTL_CDROM_PLAY_AUDIO_MSF CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
                     40: #define IOCTL_CDROM_SEEK_AUDIO_MSF CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
                     41: #define IOCTL_CDROM_STOP_AUDIO   CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
                     42: #define IOCTL_CDROM_PAUSE_AUDIO  CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
                     43: #define IOCTL_CDROM_RESUME_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
                     44: #define IOCTL_CDROM_GET_VOLUME CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
                     45: #define IOCTL_CDROM_SET_VOLUME CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
                     46: #define IOCTL_CDROM_READ_Q_CHANNEL CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS)
                     47: #define IOCTL_CDROM_GET_LAST_SESSION CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS)
                     48: 
                     49: #define IOCTL_CDROM_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
                     50: 
                     51: //
                     52: // The following device control codes are common for all class drivers.  The
                     53: // functions codes defined here must match all of the other class drivers.
                     54: //
                     55: 
                     56: #define IOCTL_CDROM_CHECK_VERIFY CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
                     57: #define IOCTL_CDROM_MEDIA_REMOVAL CTL_CODE(IOCTL_CDROM_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
                     58: #define IOCTL_CDROM_EJECT_MEDIA  CTL_CODE(IOCTL_CDROM_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
                     59: #define IOCTL_CDROM_LOAD_MEDIA   CTL_CODE(IOCTL_CDROM_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
                     60: #define IOCTL_CDROM_RESERVE      CTL_CODE(IOCTL_CDROM_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
                     61: #define IOCTL_CDROM_RELEASE      CTL_CODE(IOCTL_CDROM_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
                     62: 
                     63: //
                     64: // The following device control code is for the SIMBAD simulated bad
                     65: // sector facility. See SIMBAD.H in this directory for related structures.
                     66: //
                     67: 
                     68: #define IOCTL_CDROM_SIMBAD        CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS)
                     69: 
                     70: //
                     71: // Maximum CD Rom size
                     72: //
                     73: 
                     74: #define MAXIMUM_NUMBER_TRACKS 100
                     75: #define MAXIMUM_CDROM_SIZE 804
                     76: 
                     77: //
                     78: // CD ROM Table OF Contents (TOC)
                     79: //
                     80: // Format 0 - Get table of contents
                     81: //
                     82: 
                     83: typedef struct _TRACK_DATA {
                     84:     UCHAR Reserved;
                     85:     UCHAR Control : 4;
                     86:     UCHAR Adr : 4;
                     87:     UCHAR TrackNumber;
                     88:     UCHAR Reserved1;
                     89:     UCHAR Address[4];
                     90: } TRACK_DATA, *PTRACK_DATA;
                     91: 
                     92: typedef struct _CDROM_TOC {
                     93: 
                     94:     //
                     95:     // Header
                     96:     //
                     97: 
                     98:     UCHAR Length[2];
                     99:     UCHAR FirstTrack;
                    100:     UCHAR LastTrack;
                    101: 
                    102:     //
                    103:     // Track data
                    104:     //
                    105: 
                    106:     TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS];
                    107: } CDROM_TOC, *PCDROM_TOC;
                    108: 
                    109: #define CDROM_TOC_SIZE sizeof(CDROM_TOC)
                    110: 
                    111: //
                    112: // Play audio starting at MSF and ending at MSF
                    113: //
                    114: 
                    115: typedef struct _CDROM_PLAY_AUDIO_MSF {
                    116:     UCHAR StartingM;
                    117:     UCHAR StartingS;
                    118:     UCHAR StartingF;
                    119:     UCHAR EndingM;
                    120:     UCHAR EndingS;
                    121:     UCHAR EndingF;
                    122: } CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF;
                    123: 
                    124: //
                    125: // Seek to MSF
                    126: //
                    127: 
                    128: typedef struct _CDROM_SEEK_AUDIO_MSF {
                    129:     UCHAR M;
                    130:     UCHAR S;
                    131:     UCHAR F;
                    132: } CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF;
                    133: 
                    134: 
                    135: //
                    136: // CD ROM Data Mode Codes, used with IOCTL_CDROM_READ_Q_CHANNEL
                    137: //
                    138: 
                    139: #define IOCTL_CDROM_SUB_Q_CHANNEL    0x00
                    140: #define IOCTL_CDROM_CURRENT_POSITION 0x01
                    141: #define IOCTL_CDROM_MEDIA_CATALOG    0x02
                    142: #define IOCTL_CDROM_TRACK_ISRC       0x03
                    143: 
                    144: typedef struct _CDROM_SUB_Q_DATA_FORMAT {
                    145:     UCHAR Format;
                    146:     UCHAR Track;
                    147: } CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT;
                    148: 
                    149: 
                    150: //
                    151: // CD ROM Sub-Q Channel Data Format
                    152: //
                    153: 
                    154: typedef struct _SUB_Q_HEADER {
                    155:     UCHAR Reserved;
                    156:     UCHAR AudioStatus;
                    157:     UCHAR DataLength[2];
                    158: } SUB_Q_HEADER, *PSUB_Q_HEADER;
                    159: 
                    160: typedef struct _SUB_Q_CURRENT_POSITION {
                    161:     SUB_Q_HEADER Header;
                    162:     UCHAR FormatCode;
                    163:     UCHAR Control : 4;
                    164:     UCHAR ADR : 4;
                    165:     UCHAR TrackNumber;
                    166:     UCHAR IndexNumber;
                    167:     UCHAR AbsoluteAddress[4];
                    168:     UCHAR TrackRelativeAddress[4];
                    169: } SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION;
                    170: 
                    171: typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER {
                    172:     SUB_Q_HEADER Header;
                    173:     UCHAR FormatCode;
                    174:     UCHAR Reserved[3];
                    175:     UCHAR Reserved1 : 7;
                    176:     UCHAR Mcval : 1;
                    177:     UCHAR MediaCatalog[15];
                    178: } SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER;
                    179: 
                    180: typedef struct _SUB_Q_TRACK_ISRC {
                    181:     SUB_Q_HEADER Header;
                    182:     UCHAR FormatCode;
                    183:     UCHAR Reserved0;
                    184:     UCHAR Track;
                    185:     UCHAR Reserved1;
                    186:     UCHAR Reserved2 : 7;
                    187:     UCHAR Tcval : 1;
                    188:     UCHAR TrackIsrc[15];
                    189: } SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC;
                    190: 
                    191: typedef union _SUB_Q_CHANNEL_DATA {
                    192:     SUB_Q_CURRENT_POSITION CurrentPosition;
                    193:     SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog;
                    194:     SUB_Q_TRACK_ISRC TrackIsrc;
                    195: } SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA;
                    196: 
                    197: //
                    198: // Audio Status Codes
                    199: //
                    200: 
                    201: #define AUDIO_STATUS_NOT_SUPPORTED  0x00
                    202: #define AUDIO_STATUS_IN_PROGRESS    0x11
                    203: #define AUDIO_STATUS_PAUSED         0x12
                    204: #define AUDIO_STATUS_PLAY_COMPLETE  0x13
                    205: #define AUDIO_STATUS_PLAY_ERROR     0x14
                    206: #define AUDIO_STATUS_NO_STATUS      0x15
                    207: 
                    208: //
                    209: // ADR Sub-channel Q Field
                    210: //
                    211: 
                    212: #define ADR_NO_MODE_INFORMATION     0x0
                    213: #define ADR_ENCODES_CURRENT_POSITION 0x1
                    214: #define ADR_ENCODES_MEDIA_CATALOG   0x2
                    215: #define ADR_ENCODES_ISRC            0x3
                    216: 
                    217: //
                    218: // Sub-channel Q Control Bits
                    219: //
                    220: 
                    221: #define AUDIO_WITH_PREEMPHASIS      0x0
                    222: #define DIGITAL_COPY_PERMITTED      0x2
                    223: #define AUDIO_DATA_TRACK            0x4
                    224: #define TWO_FOUR_CHANNEL_AUDIO      0x8
                    225: 
                    226: //
                    227: // Get Audio control parameters
                    228: //
                    229: 
                    230: typedef struct _CDROM_AUDIO_CONTROL {
                    231:     UCHAR LbaFormat;
                    232:     USHORT LogicalBlocksPerSecond;
                    233: } CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL;
                    234: 
                    235: //
                    236: // Volume control - Volume takes a value between 1 and 0xFF.
                    237: // SCSI-II CDROM audio suppports up to 4 audio ports with
                    238: // Independent volume control.
                    239: //
                    240: 
                    241: typedef struct _VOLUME_CONTROL {
                    242:     UCHAR PortVolume[4];
                    243: } VOLUME_CONTROL, *PVOLUME_CONTROL;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.