Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
minitape.h
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 #if __GNUC__ >=3 00026 #pragma GCC system_header 00027 #endif 00028 00029 #ifdef __cplusplus 00030 extern "C" { 00031 #endif 00032 00033 #pragma pack(push,4) 00034 00035 #include "ntddk.h" 00036 00037 #define MEDIA_ERASEABLE 0x00000001 00038 #define MEDIA_WRITE_ONCE 0x00000002 00039 #define MEDIA_READ_ONLY 0x00000004 00040 #define MEDIA_READ_WRITE 0x00000008 00041 #define MEDIA_WRITE_PROTECTED 0x00000100 00042 #define MEDIA_CURRENTLY_MOUNTED 0x80000000 00043 00044 typedef enum _TAPE_STATUS { 00045 TAPE_STATUS_SEND_SRB_AND_CALLBACK, 00046 TAPE_STATUS_CALLBACK, 00047 TAPE_STATUS_CHECK_TEST_UNIT_READY, 00048 TAPE_STATUS_SUCCESS, 00049 TAPE_STATUS_INSUFFICIENT_RESOURCES, 00050 TAPE_STATUS_NOT_IMPLEMENTED, 00051 TAPE_STATUS_INVALID_DEVICE_REQUEST, 00052 TAPE_STATUS_INVALID_PARAMETER, 00053 TAPE_STATUS_MEDIA_CHANGED, 00054 TAPE_STATUS_BUS_RESET, 00055 TAPE_STATUS_SETMARK_DETECTED, 00056 TAPE_STATUS_FILEMARK_DETECTED, 00057 TAPE_STATUS_BEGINNING_OF_MEDIA, 00058 TAPE_STATUS_END_OF_MEDIA, 00059 TAPE_STATUS_BUFFER_OVERFLOW, 00060 TAPE_STATUS_NO_DATA_DETECTED, 00061 TAPE_STATUS_EOM_OVERFLOW, 00062 TAPE_STATUS_NO_MEDIA, 00063 TAPE_STATUS_IO_DEVICE_ERROR, 00064 TAPE_STATUS_UNRECOGNIZED_MEDIA, 00065 TAPE_STATUS_DEVICE_NOT_READY, 00066 TAPE_STATUS_MEDIA_WRITE_PROTECTED, 00067 TAPE_STATUS_DEVICE_DATA_ERROR, 00068 TAPE_STATUS_NO_SUCH_DEVICE, 00069 TAPE_STATUS_INVALID_BLOCK_LENGTH, 00070 TAPE_STATUS_IO_TIMEOUT, 00071 TAPE_STATUS_DEVICE_NOT_CONNECTED, 00072 TAPE_STATUS_DATA_OVERRUN, 00073 TAPE_STATUS_DEVICE_BUSY, 00074 TAPE_STATUS_REQUIRES_CLEANING, 00075 TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED 00076 } TAPE_STATUS, *PTAPE_STATUS; 00077 00078 #define INQUIRYDATABUFFERSIZE 36 00079 #ifndef _INQUIRYDATA_DEFINED /* also in scsi.h */ 00080 #define _INQUIRYDATA_DEFINED 00081 typedef struct _INQUIRYDATA { 00082 UCHAR DeviceType : 5; 00083 UCHAR DeviceTypeQualifier : 3; 00084 UCHAR DeviceTypeModifier : 7; 00085 UCHAR RemovableMedia : 1; 00086 union { 00087 UCHAR Versions; 00088 struct { 00089 UCHAR ANSIVersion : 3; 00090 UCHAR ECMAVersion : 3; 00091 UCHAR ISOVersion : 2; 00092 }; 00093 }; 00094 UCHAR ResponseDataFormat : 4; 00095 UCHAR HiSupport : 1; 00096 UCHAR NormACA : 1; 00097 UCHAR TerminateTask : 1; 00098 UCHAR AERC : 1; 00099 UCHAR AdditionalLength; 00100 UCHAR Reserved; 00101 UCHAR Addr16 : 1; 00102 UCHAR Addr32 : 1; 00103 UCHAR AckReqQ: 1; 00104 UCHAR MediumChanger : 1; 00105 UCHAR MultiPort : 1; 00106 UCHAR ReservedBit2 : 1; 00107 UCHAR EnclosureServices : 1; 00108 UCHAR ReservedBit3 : 1; 00109 UCHAR SoftReset : 1; 00110 UCHAR CommandQueue : 1; 00111 UCHAR TransferDisable : 1; 00112 UCHAR LinkedCommands : 1; 00113 UCHAR Synchronous : 1; 00114 UCHAR Wide16Bit : 1; 00115 UCHAR Wide32Bit : 1; 00116 UCHAR RelativeAddressing : 1; 00117 UCHAR VendorId[8]; 00118 UCHAR ProductId[16]; 00119 UCHAR ProductRevisionLevel[4]; 00120 UCHAR VendorSpecific[20]; 00121 UCHAR Reserved3[40]; 00122 } INQUIRYDATA, *PINQUIRYDATA; 00123 #endif 00124 00125 typedef struct _MODE_CAPABILITIES_PAGE { 00126 UCHAR PageCode : 6; 00127 UCHAR Reserved1 : 2; 00128 UCHAR PageLength; 00129 UCHAR Reserved2[2]; 00130 UCHAR RO : 1; 00131 UCHAR Reserved3 : 4; 00132 UCHAR SPREV : 1; 00133 UCHAR Reserved4 : 2; 00134 UCHAR Reserved5 : 3; 00135 UCHAR EFMT : 1; 00136 UCHAR Reserved6 : 1; 00137 UCHAR QFA : 1; 00138 UCHAR Reserved7 : 2; 00139 UCHAR LOCK : 1; 00140 UCHAR LOCKED : 1; 00141 UCHAR PREVENT : 1; 00142 UCHAR UNLOAD : 1; 00143 UCHAR Reserved8 : 2; 00144 UCHAR ECC : 1; 00145 UCHAR CMPRS : 1; 00146 UCHAR Reserved9 : 1; 00147 UCHAR BLK512 : 1; 00148 UCHAR BLK1024 : 1; 00149 UCHAR Reserved10 : 4; 00150 UCHAR SLOWB : 1; 00151 UCHAR MaximumSpeedSupported[2]; 00152 UCHAR MaximumStoredDefectedListEntries[2]; 00153 UCHAR ContinuousTransferLimit[2]; 00154 UCHAR CurrentSpeedSelected[2]; 00155 UCHAR BufferSize[2]; 00156 UCHAR Reserved11[2]; 00157 } MODE_CAPABILITIES_PAGE, *PMODE_CAPABILITIES_PAGE; 00158 00159 typedef BOOLEAN DDKAPI 00160 (*TAPE_VERIFY_INQUIRY_ROUTINE)( 00161 /*IN*/ PINQUIRYDATA InquiryData, 00162 /*IN*/ PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); 00163 00164 typedef VOID DDKAPI 00165 (*TAPE_EXTENSION_INIT_ROUTINE)( 00166 /*IN*/ PVOID MinitapeExtension, 00167 /*IN*/ PINQUIRYDATA InquiryData, 00168 /*IN*/ PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); 00169 00170 typedef VOID DDKAPI 00171 (*TAPE_ERROR_ROUTINE)( 00172 /*IN*/ PVOID MinitapeExtension, 00173 /*IN*/ PSCSI_REQUEST_BLOCK Srb, 00174 /*IN OUT*/ PTAPE_STATUS TapeStatus); 00175 00176 typedef TAPE_STATUS DDKAPI 00177 (*TAPE_PROCESS_COMMAND_ROUTINE)( 00178 /*IN OUT*/ PVOID MinitapeExtension, 00179 /*IN OUT*/ PVOID CommandExtension, 00180 /*IN OUT*/ PVOID CommandParameters, 00181 /*IN OUT*/ PSCSI_REQUEST_BLOCK Srb, 00182 /*IN*/ ULONG CallNumber, 00183 /*IN*/ TAPE_STATUS StatusOfLastCommand, 00184 /*IN OUT*/ PULONG RetryFlags); 00185 00186 #define TAPE_RETRY_MASK 0x0000FFFF 00187 #define IGNORE_ERRORS 0x00010000 00188 #define RETURN_ERRORS 0x00020000 00189 00190 typedef struct _TAPE_INIT_DATA { 00191 TAPE_VERIFY_INQUIRY_ROUTINE VerifyInquiry; 00192 BOOLEAN QueryModeCapabilitiesPage; 00193 ULONG MinitapeExtensionSize; 00194 TAPE_EXTENSION_INIT_ROUTINE ExtensionInit; 00195 ULONG DefaultTimeOutValue; 00196 TAPE_ERROR_ROUTINE TapeError; 00197 ULONG CommandExtensionSize; 00198 TAPE_PROCESS_COMMAND_ROUTINE CreatePartition; 00199 TAPE_PROCESS_COMMAND_ROUTINE Erase; 00200 TAPE_PROCESS_COMMAND_ROUTINE GetDriveParameters; 00201 TAPE_PROCESS_COMMAND_ROUTINE GetMediaParameters; 00202 TAPE_PROCESS_COMMAND_ROUTINE GetPosition; 00203 TAPE_PROCESS_COMMAND_ROUTINE GetStatus; 00204 TAPE_PROCESS_COMMAND_ROUTINE Prepare; 00205 TAPE_PROCESS_COMMAND_ROUTINE SetDriveParameters; 00206 TAPE_PROCESS_COMMAND_ROUTINE SetMediaParameters; 00207 TAPE_PROCESS_COMMAND_ROUTINE SetPosition; 00208 TAPE_PROCESS_COMMAND_ROUTINE WriteMarks; 00209 TAPE_PROCESS_COMMAND_ROUTINE PreProcessReadWrite /* OPTIONAL */; 00210 } TAPE_INIT_DATA, *PTAPE_INIT_DATA; 00211 00212 typedef struct _TAPE_PHYS_POSITION { 00213 ULONG SeekBlockAddress; 00214 ULONG SpaceBlockCount; 00215 } TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION; 00216 00217 #pragma pack(pop) 00218 00219 #ifdef __cplusplus 00220 } 00221 #endif 00222 00223 #endif /* __MINITAPE_H */
Generated on Tue Jul 12 2022 19:59:54 by
