Annotation of ntddk/src/scsi/inc/ntddtape.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:     ntddtape.h
        !             8: 
        !             9: Abstract:
        !            10: 
        !            11:     This is the include file that defines all constants and types for
        !            12:     accessing the Tape device.
        !            13: 
        !            14: Author:
        !            15: 
        !            16:     Steve Wood (stevewo) 27-May-1990
        !            17:     Mike Glass (mglass)
        !            18:     Hunter Small (Maynard)
        !            19:     Lori Brown (Maynard)
        !            20: 
        !            21: Revision History:
        !            22: 
        !            23: --*/
        !            24: 
        !            25: //
        !            26: // Device Name - this string is the name of the device.  It is the name
        !            27: // that should be passed to NtOpenFile when accessing the device.
        !            28: //
        !            29: // Note:  For devices that support multiple units, it should be suffixed
        !            30: //        with the Ascii representation of the unit number.
        !            31: //
        !            32: 
        !            33: #define DD_TAPE_DEVICE_NAME "\\Device\\Tape"
        !            34: 
        !            35: 
        !            36: //
        !            37: // NtDeviceIoControlFile IoControlCode values for this device.
        !            38: //
        !            39: // Warning:  Remember that the low two bits of the code specify how the
        !            40: //           buffers are passed to the driver!
        !            41: //
        !            42: 
        !            43: #define IOCTL_TAPE_BASE                 FILE_DEVICE_TAPE
        !            44: 
        !            45: #define IOCTL_TAPE_ERASE                CTL_CODE(IOCTL_TAPE_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
        !            46: #define IOCTL_TAPE_PREPARE              CTL_CODE(IOCTL_TAPE_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            47: #define IOCTL_TAPE_WRITE_MARKS          CTL_CODE(IOCTL_TAPE_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
        !            48: #define IOCTL_TAPE_GET_POSITION         CTL_CODE(IOCTL_TAPE_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            49: #define IOCTL_TAPE_SET_POSITION         CTL_CODE(IOCTL_TAPE_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            50: #define IOCTL_TAPE_GET_DRIVE_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            51: #define IOCTL_TAPE_SET_DRIVE_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
        !            52: #define IOCTL_TAPE_GET_MEDIA_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            53: #define IOCTL_TAPE_SET_MEDIA_PARAMS     CTL_CODE(IOCTL_TAPE_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
        !            54: #define IOCTL_TAPE_GET_STATUS           CTL_CODE(IOCTL_TAPE_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS )
        !            55: #define IOCTL_TAPE_CREATE_PARTITION     CTL_CODE(IOCTL_TAPE_BASE, 0x000a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
        !            56: 
        !            57: //
        !            58: // The following device control codes are common for all class drivers.  The
        !            59: // functions codes defined here must match all of the other class drivers.
        !            60: //
        !            61: 
        !            62: #define IOCTL_TAPE_CHECK_VERIFY         CTL_CODE(IOCTL_TAPE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            63: #define IOCTL_TAPE_MEDIA_REMOVAL        CTL_CODE(IOCTL_TAPE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            64: #define IOCTL_TAPE_EJECT_MEDIA          CTL_CODE(IOCTL_TAPE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            65: #define IOCTL_TAPE_LOAD_MEDIA           CTL_CODE(IOCTL_TAPE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            66: #define IOCTL_TAPE_RESERVE              CTL_CODE(IOCTL_TAPE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            67: #define IOCTL_TAPE_RELEASE              CTL_CODE(IOCTL_TAPE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
        !            68: 
        !            69: // begin_winnt
        !            70: 
        !            71: //
        !            72: // IOCTL_TAPE_ERASE definitions
        !            73: //
        !            74: 
        !            75: #define TAPE_ERASE_SHORT            0L
        !            76: #define TAPE_ERASE_LONG             1L
        !            77: 
        !            78: typedef struct _TAPE_ERASE {
        !            79:     ULONG Type;
        !            80:     BOOLEAN Immediate;
        !            81: } TAPE_ERASE, *PTAPE_ERASE;
        !            82: 
        !            83: //
        !            84: // IOCTL_TAPE_PREPARE definitions
        !            85: //
        !            86: 
        !            87: #define TAPE_LOAD                   0L
        !            88: #define TAPE_UNLOAD                 1L
        !            89: #define TAPE_TENSION                2L
        !            90: #define TAPE_LOCK                   3L
        !            91: #define TAPE_UNLOCK                 4L
        !            92: #define TAPE_FORMAT                 5L
        !            93: 
        !            94: typedef struct _TAPE_PREPARE {
        !            95:     ULONG Operation;
        !            96:     BOOLEAN Immediate;
        !            97: } TAPE_PREPARE, *PTAPE_PREPARE;
        !            98: 
        !            99: //
        !           100: // IOCTL_TAPE_WRITE_MARKS definitions
        !           101: //
        !           102: 
        !           103: #define TAPE_SETMARKS               0L
        !           104: #define TAPE_FILEMARKS              1L
        !           105: #define TAPE_SHORT_FILEMARKS        2L
        !           106: #define TAPE_LONG_FILEMARKS         3L
        !           107: 
        !           108: typedef struct _TAPE_WRITE_MARKS {
        !           109:     ULONG Type;
        !           110:     ULONG Count;
        !           111:     BOOLEAN Immediate;
        !           112: } TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS;
        !           113: 
        !           114: //
        !           115: // IOCTL_TAPE_GET_POSITION definitions
        !           116: //
        !           117: 
        !           118: #define TAPE_ABSOLUTE_POSITION       0L
        !           119: #define TAPE_LOGICAL_POSITION        1L
        !           120: #define TAPE_PSEUDO_LOGICAL_POSITION 2L
        !           121: 
        !           122: typedef struct _TAPE_GET_POSITION {
        !           123:     ULONG Type;
        !           124:     ULONG Partition;
        !           125:     LARGE_INTEGER Offset;
        !           126: } TAPE_GET_POSITION, *PTAPE_GET_POSITION;
        !           127: 
        !           128: //
        !           129: // IOCTL_TAPE_SET_POSITION definitions
        !           130: //
        !           131: 
        !           132: #define TAPE_REWIND                 0L
        !           133: #define TAPE_ABSOLUTE_BLOCK         1L
        !           134: #define TAPE_LOGICAL_BLOCK          2L
        !           135: #define TAPE_PSEUDO_LOGICAL_BLOCK   3L
        !           136: #define TAPE_SPACE_END_OF_DATA      4L
        !           137: #define TAPE_SPACE_RELATIVE_BLOCKS  5L
        !           138: #define TAPE_SPACE_FILEMARKS        6L
        !           139: #define TAPE_SPACE_SEQUENTIAL_FMKS  7L
        !           140: #define TAPE_SPACE_SETMARKS         8L
        !           141: #define TAPE_SPACE_SEQUENTIAL_SMKS  9L
        !           142: 
        !           143: typedef struct _TAPE_SET_POSITION {
        !           144:     ULONG Method;
        !           145:     ULONG Partition;
        !           146:     LARGE_INTEGER Offset;
        !           147:     BOOLEAN Immediate;
        !           148: } TAPE_SET_POSITION, *PTAPE_SET_POSITION;
        !           149: 
        !           150: //
        !           151: // IOCTL_TAPE_GET_DRIVE_PARAMS definitions
        !           152: //
        !           153: 
        !           154: //
        !           155: // Definitions for FeaturesLow parameter
        !           156: //
        !           157: 
        !           158: #define TAPE_DRIVE_FIXED            0x00000001
        !           159: #define TAPE_DRIVE_SELECT           0x00000002
        !           160: #define TAPE_DRIVE_INITIATOR        0x00000004
        !           161: 
        !           162: #define TAPE_DRIVE_ERASE_SHORT      0x00000010
        !           163: #define TAPE_DRIVE_ERASE_LONG       0x00000020
        !           164: #define TAPE_DRIVE_ERASE_BOP_ONLY   0x00000040
        !           165: #define TAPE_DRIVE_ERASE_IMMEDIATE  0x00000080
        !           166: 
        !           167: #define TAPE_DRIVE_TAPE_CAPACITY    0x00000100
        !           168: #define TAPE_DRIVE_TAPE_REMAINING   0x00000200
        !           169: #define TAPE_DRIVE_FIXED_BLOCK      0x00000400
        !           170: #define TAPE_DRIVE_VARIABLE_BLOCK   0x00000800
        !           171: 
        !           172: #define TAPE_DRIVE_WRITE_PROTECT    0x00001000
        !           173: #define TAPE_DRIVE_EOT_WZ_SIZE      0x00002000
        !           174: 
        !           175: #define TAPE_DRIVE_ECC              0x00010000
        !           176: #define TAPE_DRIVE_COMPRESSION      0x00020000
        !           177: #define TAPE_DRIVE_PADDING          0x00040000
        !           178: #define TAPE_DRIVE_REPORT_SMKS      0x00080000
        !           179: 
        !           180: #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000
        !           181: #define TAPE_DRIVE_GET_LOGICAL_BLK  0x00200000
        !           182: #define TAPE_DRIVE_SET_EOT_WZ_SIZE  0x00400000
        !           183: 
        !           184: #define TAPE_DRIVE_RESERVED_BIT     0x80000000  //don't use this bit!
        !           185: //                                              //can't be a low features bit!
        !           186: //                                              //reserved; high features only
        !           187: 
        !           188: //
        !           189: // Definitions for FeaturesHigh parameter
        !           190: //
        !           191: 
        !           192: #define TAPE_DRIVE_LOAD_UNLOAD      0x80000001
        !           193: #define TAPE_DRIVE_TENSION          0x80000002
        !           194: #define TAPE_DRIVE_LOCK_UNLOCK      0x80000004
        !           195: #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
        !           196: 
        !           197: #define TAPE_DRIVE_SET_BLOCK_SIZE   0x80000010
        !           198: #define TAPE_DRIVE_LOAD_UNLD_IMMED  0x80000020
        !           199: #define TAPE_DRIVE_TENSION_IMMED    0x80000040
        !           200: #define TAPE_DRIVE_LOCK_UNLK_IMMED  0x80000080
        !           201: 
        !           202: #define TAPE_DRIVE_SET_ECC          0x80000100
        !           203: #define TAPE_DRIVE_SET_COMPRESSION  0x80000200
        !           204: #define TAPE_DRIVE_SET_PADDING      0x80000400
        !           205: #define TAPE_DRIVE_SET_REPORT_SMKS  0x80000800
        !           206: 
        !           207: #define TAPE_DRIVE_ABSOLUTE_BLK     0x80001000
        !           208: #define TAPE_DRIVE_ABS_BLK_IMMED    0x80002000
        !           209: #define TAPE_DRIVE_LOGICAL_BLK      0x80004000
        !           210: #define TAPE_DRIVE_LOG_BLK_IMMED    0x80008000
        !           211: 
        !           212: #define TAPE_DRIVE_END_OF_DATA      0x80010000
        !           213: #define TAPE_DRIVE_RELATIVE_BLKS    0x80020000
        !           214: #define TAPE_DRIVE_FILEMARKS        0x80040000
        !           215: #define TAPE_DRIVE_SEQUENTIAL_FMKS  0x80080000
        !           216: 
        !           217: #define TAPE_DRIVE_SETMARKS         0x80100000
        !           218: #define TAPE_DRIVE_SEQUENTIAL_SMKS  0x80200000
        !           219: #define TAPE_DRIVE_REVERSE_POSITION 0x80400000
        !           220: #define TAPE_DRIVE_SPACE_IMMEDIATE  0x80800000
        !           221: 
        !           222: #define TAPE_DRIVE_WRITE_SETMARKS   0x81000000
        !           223: #define TAPE_DRIVE_WRITE_FILEMARKS  0x82000000
        !           224: #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
        !           225: #define TAPE_DRIVE_WRITE_LONG_FMKS  0x88000000
        !           226: 
        !           227: #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
        !           228: #define TAPE_DRIVE_FORMAT           0xA0000000
        !           229: #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
        !           230: #define TAPE_DRIVE_HIGH_FEATURES    0x80000000  //mask for high features flag
        !           231: 
        !           232: typedef struct _TAPE_GET_DRIVE_PARAMETERS {
        !           233:     BOOLEAN ECC;
        !           234:     BOOLEAN Compression;
        !           235:     BOOLEAN DataPadding;
        !           236:     BOOLEAN ReportSetmarks;
        !           237:     ULONG DefaultBlockSize;
        !           238:     ULONG MaximumBlockSize;
        !           239:     ULONG MinimumBlockSize;
        !           240:     ULONG MaximumPartitionCount;
        !           241:     ULONG FeaturesLow;
        !           242:     ULONG FeaturesHigh;
        !           243:     ULONG EOTWarningZoneSize;
        !           244: } TAPE_GET_DRIVE_PARAMETERS, *PTAPE_GET_DRIVE_PARAMETERS;
        !           245: 
        !           246: //
        !           247: // IOCTL_TAPE_SET_DRIVE_PARAMETERS definitions
        !           248: //
        !           249: 
        !           250: typedef struct _TAPE_SET_DRIVE_PARAMETERS {
        !           251:     BOOLEAN ECC;
        !           252:     BOOLEAN Compression;
        !           253:     BOOLEAN DataPadding;
        !           254:     BOOLEAN ReportSetmarks;
        !           255:     ULONG EOTWarningZoneSize;
        !           256: } TAPE_SET_DRIVE_PARAMETERS, *PTAPE_SET_DRIVE_PARAMETERS;
        !           257: 
        !           258: //
        !           259: // IOCTL_TAPE_GET_MEDIA_PARAMETERS definitions
        !           260: //
        !           261: 
        !           262: typedef struct _TAPE_GET_MEDIA_PARAMETERS {
        !           263:     LARGE_INTEGER Capacity;
        !           264:     LARGE_INTEGER Remaining;
        !           265:     ULONG BlockSize;
        !           266:     ULONG PartitionCount;
        !           267:     BOOLEAN WriteProtected;
        !           268: } TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS;
        !           269: 
        !           270: //
        !           271: // IOCTL_TAPE_SET_MEDIA_PARAMETERS definitions
        !           272: //
        !           273: 
        !           274: typedef struct _TAPE_SET_MEDIA_PARAMETERS {
        !           275:     ULONG BlockSize;
        !           276: } TAPE_SET_MEDIA_PARAMETERS, *PTAPE_SET_MEDIA_PARAMETERS;
        !           277: 
        !           278: //
        !           279: // IOCTL_TAPE_CREATE_PARTITION definitions
        !           280: //
        !           281: 
        !           282: #define TAPE_FIXED_PARTITIONS       0L
        !           283: #define TAPE_SELECT_PARTITIONS      1L
        !           284: #define TAPE_INITIATOR_PARTITIONS   2L
        !           285: 
        !           286: typedef struct _TAPE_CREATE_PARTITION {
        !           287:     ULONG Method;
        !           288:     ULONG Count;
        !           289:     ULONG Size;
        !           290: } TAPE_CREATE_PARTITION, *PTAPE_CREATE_PARTITION;
        !           291: 
        !           292: // end_winnt

unix.superglobalmegacorp.com

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