|
|
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;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.