ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

minitape.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.