Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenminitape.h
Go to the documentation of this file.
00001 /* 00002 * minitape.h 00003 * 00004 * Minitape driver interface 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 #ifndef __MINITAPE_H 00023 #define __MINITAPE_H 00024 00025 #ifdef __cplusplus 00026 extern "C" { 00027 #endif 00028 00029 #pragma pack(push,4) 00030 00031 #define MEDIA_ERASEABLE 0x00000001 00032 #define MEDIA_WRITE_ONCE 0x00000002 00033 #define MEDIA_READ_ONLY 0x00000004 00034 #define MEDIA_READ_WRITE 0x00000008 00035 #define MEDIA_WRITE_PROTECTED 0x00000100 00036 #define MEDIA_CURRENTLY_MOUNTED 0x80000000 00037 00038 typedef enum _TAPE_STATUS { 00039 TAPE_STATUS_SEND_SRB_AND_CALLBACK, 00040 TAPE_STATUS_CALLBACK, 00041 TAPE_STATUS_CHECK_TEST_UNIT_READY, 00042 TAPE_STATUS_SUCCESS, 00043 TAPE_STATUS_INSUFFICIENT_RESOURCES, 00044 TAPE_STATUS_NOT_IMPLEMENTED, 00045 TAPE_STATUS_INVALID_DEVICE_REQUEST, 00046 TAPE_STATUS_INVALID_PARAMETER, 00047 TAPE_STATUS_MEDIA_CHANGED, 00048 TAPE_STATUS_BUS_RESET, 00049 TAPE_STATUS_SETMARK_DETECTED, 00050 TAPE_STATUS_FILEMARK_DETECTED, 00051 TAPE_STATUS_BEGINNING_OF_MEDIA, 00052 TAPE_STATUS_END_OF_MEDIA, 00053 TAPE_STATUS_BUFFER_OVERFLOW, 00054 TAPE_STATUS_NO_DATA_DETECTED, 00055 TAPE_STATUS_EOM_OVERFLOW, 00056 TAPE_STATUS_NO_MEDIA, 00057 TAPE_STATUS_IO_DEVICE_ERROR, 00058 TAPE_STATUS_UNRECOGNIZED_MEDIA, 00059 TAPE_STATUS_DEVICE_NOT_READY, 00060 TAPE_STATUS_MEDIA_WRITE_PROTECTED, 00061 TAPE_STATUS_DEVICE_DATA_ERROR, 00062 TAPE_STATUS_NO_SUCH_DEVICE, 00063 TAPE_STATUS_INVALID_BLOCK_LENGTH, 00064 TAPE_STATUS_IO_TIMEOUT, 00065 TAPE_STATUS_DEVICE_NOT_CONNECTED, 00066 TAPE_STATUS_DATA_OVERRUN, 00067 TAPE_STATUS_DEVICE_BUSY, 00068 TAPE_STATUS_REQUIRES_CLEANING, 00069 TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED 00070 } TAPE_STATUS, *PTAPE_STATUS; 00071 00072 #define INQUIRYDATABUFFERSIZE 36 00073 00074 #ifndef _INQUIRYDATA_DEFINED /* also in scsi.h */ 00075 #define _INQUIRYDATA_DEFINED 00076 00077 typedef struct _INQUIRYDATA { 00078 UCHAR DeviceType:5; 00079 UCHAR DeviceTypeQualifier:3; 00080 UCHAR DeviceTypeModifier:7; 00081 UCHAR RemovableMedia:1; 00082 __GNU_EXTENSION union { 00083 UCHAR Versions; 00084 __GNU_EXTENSION struct { 00085 UCHAR ANSIVersion:3; 00086 UCHAR ECMAVersion:3; 00087 UCHAR ISOVersion:2; 00088 }; 00089 }; 00090 UCHAR ResponseDataFormat:4; 00091 UCHAR HiSupport:1; 00092 UCHAR NormACA:1; 00093 UCHAR TerminateTask:1; 00094 UCHAR AERC:1; 00095 UCHAR AdditionalLength; 00096 UCHAR Reserved; 00097 UCHAR Addr16:1; 00098 UCHAR Addr32:1; 00099 UCHAR AckReqQ:1; 00100 UCHAR MediumChanger:1; 00101 UCHAR MultiPort:1; 00102 UCHAR ReservedBit2:1; 00103 UCHAR EnclosureServices:1; 00104 UCHAR ReservedBit3:1; 00105 UCHAR SoftReset:1; 00106 UCHAR CommandQueue:1; 00107 UCHAR TransferDisable:1; 00108 UCHAR LinkedCommands:1; 00109 UCHAR Synchronous:1; 00110 UCHAR Wide16Bit:1; 00111 UCHAR Wide32Bit:1; 00112 UCHAR RelativeAddressing:1; 00113 UCHAR VendorId[8]; 00114 UCHAR ProductId[16]; 00115 UCHAR ProductRevisionLevel[4]; 00116 UCHAR VendorSpecific[20]; 00117 UCHAR Reserved3[40]; 00118 } INQUIRYDATA, *PINQUIRYDATA; 00119 00120 #endif /* _INQUIRYDATA_DEFINED */ 00121 00122 typedef struct _MODE_CAPABILITIES_PAGE { 00123 UCHAR PageCode:6; 00124 UCHAR Reserved1:2; 00125 UCHAR PageLength; 00126 UCHAR Reserved2[2]; 00127 UCHAR RO:1; 00128 UCHAR Reserved3:4; 00129 UCHAR SPREV:1; 00130 UCHAR Reserved4:2; 00131 UCHAR Reserved5:3; 00132 UCHAR EFMT:1; 00133 UCHAR Reserved6:1; 00134 UCHAR QFA:1; 00135 UCHAR Reserved7:2; 00136 UCHAR LOCK:1; 00137 UCHAR LOCKED:1; 00138 UCHAR PREVENT:1; 00139 UCHAR UNLOAD:1; 00140 UCHAR Reserved8:2; 00141 UCHAR ECC:1; 00142 UCHAR CMPRS:1; 00143 UCHAR Reserved9:1; 00144 UCHAR BLK512:1; 00145 UCHAR BLK1024:1; 00146 UCHAR Reserved10:4; 00147 UCHAR SLOWB:1; 00148 UCHAR MaximumSpeedSupported[2]; 00149 UCHAR MaximumStoredDefectedListEntries[2]; 00150 UCHAR ContinuousTransferLimit[2]; 00151 UCHAR CurrentSpeedSelected[2]; 00152 UCHAR BufferSize[2]; 00153 UCHAR Reserved11[2]; 00154 } MODE_CAPABILITIES_PAGE, *PMODE_CAPABILITIES_PAGE; 00155 00156 typedef BOOLEAN NTAPI 00157 (*TAPE_VERIFY_INQUIRY_ROUTINE)( 00158 IN PINQUIRYDATA InquiryData, 00159 IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); 00160 00161 typedef VOID NTAPI 00162 (*TAPE_EXTENSION_INIT_ROUTINE)( 00163 IN PVOID MinitapeExtension, 00164 IN PINQUIRYDATA InquiryData, 00165 IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); 00166 00167 typedef VOID NTAPI 00168 (*TAPE_ERROR_ROUTINE)( 00169 IN PVOID MinitapeExtension, 00170 IN PSCSI_REQUEST_BLOCK Srb, 00171 IN OUT PTAPE_STATUS TapeStatus); 00172 00173 typedef TAPE_STATUS NTAPI 00174 (*TAPE_PROCESS_COMMAND_ROUTINE)( 00175 IN OUT PVOID MinitapeExtension, 00176 IN OUT PVOID CommandExtension, 00177 IN OUT PVOID CommandParameters, 00178 IN OUT PSCSI_REQUEST_BLOCK Srb, 00179 IN ULONG CallNumber, 00180 IN TAPE_STATUS StatusOfLastCommand, 00181 IN OUT PULONG RetryFlags); 00182 00183 #define TAPE_RETRY_MASK 0x0000FFFF 00184 #define IGNORE_ERRORS 0x00010000 00185 #define RETURN_ERRORS 0x00020000 00186 00187 typedef struct _TAPE_INIT_DATA { 00188 TAPE_VERIFY_INQUIRY_ROUTINE VerifyInquiry; 00189 BOOLEAN QueryModeCapabilitiesPage; 00190 ULONG MinitapeExtensionSize; 00191 TAPE_EXTENSION_INIT_ROUTINE ExtensionInit; 00192 ULONG DefaultTimeOutValue; 00193 TAPE_ERROR_ROUTINE TapeError; 00194 ULONG CommandExtensionSize; 00195 TAPE_PROCESS_COMMAND_ROUTINE CreatePartition; 00196 TAPE_PROCESS_COMMAND_ROUTINE Erase; 00197 TAPE_PROCESS_COMMAND_ROUTINE GetDriveParameters; 00198 TAPE_PROCESS_COMMAND_ROUTINE GetMediaParameters; 00199 TAPE_PROCESS_COMMAND_ROUTINE GetPosition; 00200 TAPE_PROCESS_COMMAND_ROUTINE GetStatus; 00201 TAPE_PROCESS_COMMAND_ROUTINE Prepare; 00202 TAPE_PROCESS_COMMAND_ROUTINE SetDriveParameters; 00203 TAPE_PROCESS_COMMAND_ROUTINE SetMediaParameters; 00204 TAPE_PROCESS_COMMAND_ROUTINE SetPosition; 00205 TAPE_PROCESS_COMMAND_ROUTINE WriteMarks; 00206 TAPE_PROCESS_COMMAND_ROUTINE PreProcessReadWrite; /* optional */ 00207 } TAPE_INIT_DATA, *PTAPE_INIT_DATA; 00208 00209 typedef struct _TAPE_PHYS_POSITION { 00210 ULONG SeekBlockAddress; 00211 ULONG SpaceBlockCount; 00212 } TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION; 00213 00214 #pragma pack(pop) 00215 00216 #ifdef __cplusplus 00217 } 00218 #endif 00219 00220 #endif /* __MINITAPE_H */ Generated on Thu May 24 2012 04:30:40 for ReactOS by
1.7.6.1
|