Annotation of ntddk/src/scsi/inc/ntddcdrm.h, revision 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.