Annotation of ntddk/src/scsi/inc/ntddtape.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:     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.