Annotation of ntddk/src/scsi/qic117/q117data.h, revision 1.1

1.1     ! root        1: /*++
        !             2: 
        !             3: Copyright (c) 1993 - Colorado Memory Systems, Inc.
        !             4: All Rights Reserved
        !             5: 
        !             6: Module Name:
        !             7: 
        !             8:     q117data.h
        !             9: 
        !            10: Abstract:
        !            11: 
        !            12: 
        !            13: Revision History:
        !            14: 
        !            15: 
        !            16: 
        !            17: 
        !            18: --*/
        !            19: 
        !            20: 
        !            21: 
        !            22: //
        !            23: // Define the maximum number of controllers and floppies per controller
        !            24: // that this driver will support.
        !            25: //
        !            26: // The number of floppies per controller is fixed at 4, since the
        !            27: // controllers don't have enough bits to select more than that (and
        !            28: // actually, many controllers will only support 2).  The number of
        !            29: // controllers per machine is arbitrary; 3 should be more than enough.
        !            30: //
        !            31: 
        !            32: #define MAXIMUM_CONTROLLERS_PER_MACHINE    3
        !            33: 
        !            34: //
        !            35: // Macros to access the controller.  Note that the *_PORT_UCHAR macros
        !            36: // work on all machines, whether the I/O ports are separate or in
        !            37: // memory space.
        !            38: //
        !            39: 
        !            40: #define READ_CONTROLLER( Address )                         \
        !            41:     READ_PORT_UCHAR( ( PUCHAR )Address )
        !            42: 
        !            43: #define WRITE_CONTROLLER( Address, Value )                 \
        !            44:     WRITE_PORT_UCHAR( ( PUCHAR )Address, ( UCHAR )Value )
        !            45: 
        !            46: 
        !            47: //
        !            48: // Floppy register structure.  The base address of the controller is
        !            49: // passed in by configuration management.  Note that this is the 82077
        !            50: // structure, which is a superset of the PD765 structure.  Not all of
        !            51: // the registers are used.
        !            52: //
        !            53: 
        !            54: typedef struct _TAPE_ADDRESS {
        !            55:     UCHAR StatusA;
        !            56:     UCHAR StatusB;
        !            57:     UCHAR dor;
        !            58:     UCHAR tdr;
        !            59:     union {
        !            60:         UCHAR msr;
        !            61:         UCHAR dsr;
        !            62:     } MSDSR;
        !            63:     UCHAR dr;
        !            64:     UCHAR Reserved2;
        !            65:     UCHAR dcr;
        !            66: } TAPE_ADDRESS, *PTAPE_ADDRESS;
        !            67: 
        !            68: 
        !            69: //
        !            70: // Define the maximum number of tape drives per controller
        !            71: // that this driver will support.
        !            72: //
        !            73: // The number of tape drives per controller is fixed at 1, since the
        !            74: // software select schemes generally work for one drive only.
        !            75: //
        !            76: 
        !            77: #define MAXIMUM_TAPE_DRIVES_PER_CONTROLLER 1
        !            78: 
        !            79: 
        !            80: //
        !            81: // This structure holds all of the configuration data.  It is filled in
        !            82: // by FlGetConfigurationInformation(), which gets the information from
        !            83: // the configuration manager or the hardware architecture layer (HAL).
        !            84: //
        !            85: 
        !            86: typedef struct _CONFIG_CONTROLLER_DATA {
        !            87:     PHYSICAL_ADDRESS OriginalBaseAddress;
        !            88:     PTAPE_ADDRESS   ControllerBaseAddress;
        !            89:     PADAPTER_OBJECT AdapterObject;
        !            90:     ULONG           SpanOfControllerAddress;
        !            91:     ULONG           NumberOfMapRegisters;
        !            92:     ULONG           BusNumber;
        !            93:     ULONG           OriginalIrql;
        !            94:     ULONG           OriginalVector;
        !            95:     ULONG           OriginalDmaChannel;
        !            96:     PKEVENT         ControllerEvent;
        !            97:     LONG            ActualControllerNumber;
        !            98:     INTERFACE_TYPE  InterfaceType;
        !            99:     KINTERRUPT_MODE InterruptMode;
        !           100:     KAFFINITY       ProcessorMask;
        !           101:     KIRQL           ControllerIrql;
        !           102:     BOOLEAN         SaveFloatState;
        !           103:     BOOLEAN         SharableVector;
        !           104:     BOOLEAN         MappedAddress;
        !           105:     BOOLEAN         OkToUseThisController;
        !           106:     ULONG           ControllerVector;
        !           107:     UCHAR           NumberOfTapeDrives;
        !           108:     UCHAR           DriveType[MAXIMUM_TAPE_DRIVES_PER_CONTROLLER];
        !           109: } CONFIG_CONTROLLER_DATA,*PCONFIG_CONTROLLER_DATA;
        !           110: 
        !           111: typedef struct _CONFIG_DATA {
        !           112:     ULONG           FloppyTapeCount;
        !           113:     UCHAR           NumberOfControllers;
        !           114:     CONFIG_CONTROLLER_DATA Controller[MAXIMUM_CONTROLLERS_PER_MACHINE];
        !           115: } CONFIG_DATA;
        !           116: 
        !           117: typedef CONFIG_DATA *PCONFIG_DATA;
        !           118: 
        !           119: 
        !           120: 
        !           121: 
        !           122: typedef struct _TAPE_CONTROLLER_DATA {
        !           123:     LIST_ENTRY          ListEntry;
        !           124:     KEVENT              ClearQueueEvent;
        !           125:     KEVENT              InterruptEvent;
        !           126:     KEVENT              AllocateAdapterChannelEvent;
        !           127:     HANDLE              ControllerEventHandle;
        !           128:     PKEVENT             ControllerEvent;
        !           129:     KSEMAPHORE          RequestSemaphore;
        !           130:     KSPIN_LOCK          ListSpinLock;
        !           131:     PKINTERRUPT         InterruptObject;
        !           132:     PVOID               MapRegisterBase;
        !           133:     LONG                ActualControllerNumber;
        !           134:     PADAPTER_OBJECT     AdapterObject;
        !           135:     ULONG               NumberOfMapRegisters;
        !           136:     PDEVICE_OBJECT      CurrentDeviceObject;
        !           137:     PTAPE_ADDRESS       FDC_Addr;
        !           138:     LONG                FloppyControllerEventTimer;
        !           139:     PVOID               TapeExtension;
        !           140:     INTERFACE_TYPE      InterfaceType;
        !           141:     DRIVE_SELECT        DriveSelect;
        !           142:     FORMAT_CMD          FmtCmd;
        !           143:     FDC_STATUS          FdcStat;
        !           144:     BOOLEAN             CommandHasResultPhase;
        !           145:     BOOLEAN             UnloadingDriver;
        !           146:     UCHAR               NumberOfTapeDrives;
        !           147:     UCHAR               FDC_Pcn;
        !           148:     UCHAR               FifoByte;
        !           149:     BOOLEAN             QueueEmpty;
        !           150:     BOOLEAN             ClearQueue;
        !           151:     BOOLEAN             AbortRequested;
        !           152:     BOOLEAN             CurrentInterrupt;
        !           153:     BOOLEAN             PerpendicularMode;
        !           154:     BOOLEAN             StartFormatMode;
        !           155:     BOOLEAN             EndFormatMode;
        !           156:     BOOLEAN             AdapterLocked;
        !           157:     UCHAR               PerpModeSelect;
        !           158: } TAPE_CONTROLLER_DATA;
        !           159: 
        !           160: typedef TAPE_CONTROLLER_DATA *PTAPE_CONTROLLER_DATA;
        !           161: 
        !           162: typedef struct _TAPE_OPERATION_STATUS {
        !           163:     ULONG               BytesTransferredSoFar;
        !           164:     ULONG               TotalBytesOfTransfer;
        !           165:     ULONG               CurLst;
        !           166:     SHORT               DataAmount;
        !           167:     SHORT               Scount;
        !           168:     SHORT               NoDat;
        !           169:     SHORT               D_Amt;
        !           170:     SHORT               RetryCount;
        !           171:     SHORT               RetryTimes;
        !           172:     UCHAR               D_FTK;
        !           173:     UCHAR               D_Sect;
        !           174:     CHAR                D_Head;
        !           175:     UCHAR               RetrySectorId;
        !           176:     CHAR                SeekFlag;
        !           177:     UCHAR               S_Sect;
        !           178: } TAPE_OPERATION_STATUS,*PTAPE_OPERATION_STATUS;
        !           179: 
        !           180: 
        !           181: typedef struct _TAPE_EXTENSION {
        !           182:     PDEVICE_OBJECT          QDeviceObject;
        !           183:     PTAPE_CONTROLLER_DATA   QControllerData;
        !           184:     ULONG                   BytesPerSector;
        !           185:     ULONG                   ByteCapacity;
        !           186:     ULONG                   ErrorSequence;
        !           187:     ULONG                   TapeNumber;
        !           188:     MEDIA_TYPE              MediaType;
        !           189:     DRIVE_PARAMETERS        DriveParms;
        !           190:     TRANSFER_RATE           XferRate;
        !           191:     TAPE_PARAMETERS         TapeParms;
        !           192:     TAPE_POSITION           TapePosition;
        !           193:     MISC_DRIVE_INFO         MiscDriveInfo;
        !           194:     TAPE_OPERATION_STATUS   RdWrOp;
        !           195:     FMT_PARAMETERS          FmtOp;
        !           196:     SHORT                   RetrySeqNum;
        !           197:     USHORT                  NumTracks;
        !           198:     FIRMWARE_ERROR          FirmwareError;
        !           199:     UCHAR                   DriveType;
        !           200:     UCHAR                   DeviceUnit;
        !           201:     UCHAR                   DriveOnValue;
        !           202:     BOOLEAN                 NoPause;
        !           203:     BOOLEAN                 PersistentNewCart;
        !           204:     BOOLEAN                 NewCart;
        !           205:     BOOLEAN                 NoCart;
        !           206:     BOOLEAN                 SpeedChangeOK;
        !           207:     BOOLEAN                 Found;
        !           208:     BOOLEAN                 PegasusSupported;
        !           209: #if DBG
        !           210: #define DBG_SIZE  4096
        !           211:     ULONG DbgCommand[DBG_SIZE];
        !           212:     int DbgHead;
        !           213:     int DbgTail;
        !           214:     BOOLEAN DbgLockout;
        !           215: #define DbgAddEntry(data) \
        !           216:         TapeExtension->DbgCommand[TapeExtension->DbgTail] = (data); \
        !           217: \
        !           218:         if (!TapeExtension->DbgLockout) \
        !           219:             ++TapeExtension->DbgTail; \
        !           220: \
        !           221:         if (TapeExtension->DbgTail >= DBG_SIZE) { \
        !           222:             TapeExtension->DbgTail = 0; \
        !           223:         }
        !           224: 
        !           225: #else
        !           226: #define DbgAddEntry(data)
        !           227: #endif
        !           228: 
        !           229: } TAPE_EXTENSION;
        !           230: 
        !           231: typedef TAPE_EXTENSION *PTAPE_EXTENSION;
        !           232: 
        !           233: //
        !           234: // Prototypes of driver routines.
        !           235: //
        !           236: 
        !           237: NTSTATUS
        !           238: DriverEntry(
        !           239:     IN OUT PDRIVER_OBJECT DriverObject,
        !           240:     IN PUNICODE_STRING RegistryPath
        !           241:     );
        !           242: 
        !           243: NTSTATUS
        !           244: Q117iConfigCallBack(
        !           245:     IN PVOID Context,
        !           246:     IN PUNICODE_STRING PathName,
        !           247:     IN INTERFACE_TYPE BusType,
        !           248:     IN ULONG BusNumber,
        !           249:     IN PKEY_VALUE_FULL_INFORMATION *BusInformation,
        !           250:     IN CONFIGURATION_TYPE ControllerType,
        !           251:     IN ULONG ControllerNumber,
        !           252:     IN PKEY_VALUE_FULL_INFORMATION *ControllerInformation,
        !           253:     IN CONFIGURATION_TYPE PeripheralType,
        !           254:     IN ULONG PeripheralNumber,
        !           255:     IN PKEY_VALUE_FULL_INFORMATION *PeripheralInformation
        !           256:     );
        !           257: 
        !           258: NTSTATUS
        !           259: Q117iGetConfigurationInformation(
        !           260:     OUT PCONFIG_DATA *ConfigData
        !           261:     );
        !           262: 
        !           263: NTSTATUS
        !           264: Q117iInitializeController(
        !           265:     IN PCONFIG_DATA ConfigData,
        !           266:     IN UCHAR ControllerNumber,
        !           267:    IN PDRIVER_OBJECT DriverObject,
        !           268:    IN PUNICODE_STRING RegistryPath
        !           269:     );
        !           270: 
        !           271: BOOLEAN
        !           272: Q117iReportResources(
        !           273:     IN PDRIVER_OBJECT DriverObject,
        !           274:     IN PCONFIG_DATA ConfigData,
        !           275:     IN UCHAR ControllerNumber
        !           276:     );
        !           277: 
        !           278: NTSTATUS
        !           279: Q117iInitializeControllerHardware(
        !           280:    IN PTAPE_CONTROLLER_DATA ControllerData,
        !           281:     IN PDEVICE_OBJECT DeviceObject
        !           282:     );
        !           283: 
        !           284: NTSTATUS
        !           285: Q117iInitializeDrive(
        !           286:     IN PCONFIG_DATA ConfigData,
        !           287:    IN PTAPE_CONTROLLER_DATA ControllerData,
        !           288:     IN UCHAR ControllerNum,
        !           289:     IN PDRIVER_OBJECT DriverObject,
        !           290:    IN PUNICODE_STRING RegistryPath
        !           291:     );
        !           292: 
        !           293: NTSTATUS
        !           294: Q117iTapeDispatchInternalDeviceControl(
        !           295:     IN PDEVICE_OBJECT DeviceObject,
        !           296:     IN OUT PIRP Irp
        !           297:     );
        !           298: 
        !           299: NTSTATUS
        !           300: Q117iTapeDispatchReadWrite(
        !           301:     IN PDEVICE_OBJECT DeviceObject,
        !           302:     IN OUT PIRP Irp
        !           303:     );
        !           304: 
        !           305: BOOLEAN
        !           306: Q117iTapeInterruptService(
        !           307:     IN PKINTERRUPT Interrupt,
        !           308:     IN OUT PVOID Context
        !           309:     );
        !           310: 
        !           311: VOID
        !           312: Q117iTapeDeferredProcedure(
        !           313:     IN PKDPC Dpc,
        !           314:     IN PVOID DeferredContext,
        !           315:     IN PVOID SystemArgument1,
        !           316:     IN PVOID SystemArgument2
        !           317:     );
        !           318: 
        !           319: VOID
        !           320: Q117iTapeUnloadDriver(
        !           321:     IN PDRIVER_OBJECT DriverObject
        !           322:     );
        !           323: 
        !           324: VOID
        !           325: Q117iTapeMotorOffDpc(
        !           326:     IN PDEVICE_OBJECT DeviceObject,
        !           327:     IN OUT PVOID InterruptTimer
        !           328:     );
        !           329: 
        !           330: NTSTATUS
        !           331: Q117iRecalibrateDrive(
        !           332:     IN PTAPE_EXTENSION TapeExtension
        !           333:     );
        !           334: 
        !           335: NTSTATUS
        !           336: Q117iDatarateSpecifyConfigure(
        !           337:     IN PTAPE_EXTENSION TapeExtension
        !           338:     );
        !           339: 
        !           340: NTSTATUS
        !           341: Q117iResetController(
        !           342:     IN OUT PTAPE_CONTROLLER_DATA ControllerData,
        !           343:     IN UCHAR DataRate
        !           344:     );
        !           345: 
        !           346: NTSTATUS
        !           347: Q117iStartDrive(
        !           348:     IN OUT PTAPE_EXTENSION TapeExtension,
        !           349:     IN BOOLEAN WriteOperation,
        !           350:     IN BOOLEAN SetUpMedia
        !           351:     );
        !           352: 
        !           353: NTSTATUS
        !           354: Q117iDetermineMediaType(
        !           355:     IN OUT PTAPE_EXTENSION TapeExtension
        !           356:     );
        !           357: 
        !           358: VOID
        !           359: Q117iTapeThread(
        !           360:     IN OUT PTAPE_CONTROLLER_DATA ControllerData
        !           361:     );
        !           362: 
        !           363: IO_ALLOCATION_ACTION
        !           364: Q117iTapeAllocateAdapterChannel(
        !           365:     IN PDEVICE_OBJECT DeviceObject,
        !           366:     IN PIRP Irp,
        !           367:     IN PVOID MapRegisterBase,
        !           368:     IN PVOID Context
        !           369:     );
        !           370: 
        !           371: NTSTATUS
        !           372: Q117iFormat(
        !           373:     IN PTAPE_EXTENSION TapeExtension,
        !           374:     IN PIRP Irp
        !           375:     );
        !           376: 
        !           377: NTSTATUS
        !           378: Q117iIssueCommand(
        !           379:     IN DRIVER_COMMAND Command,
        !           380:     IN OUT PTAPE_EXTENSION TapeExtension
        !           381:     );
        !           382: 
        !           383: ULONG
        !           384: Q117iGetControllerBase(
        !           385:     IN INTERFACE_TYPE BusType,
        !           386:     IN ULONG BusNumber,
        !           387:     IN PHYSICAL_ADDRESS IoAddress,
        !           388:     IN ULONG NumberOfBytes,
        !           389:     IN BOOLEAN InIoSpace,
        !           390:     OUT PBOOLEAN MappedAddress
        !           391:     );
        !           392: 
        !           393: NTSTATUS
        !           394: Q117iProcessItem(
        !           395:     IN OUT PIRP Irp
        !           396:     );
        !           397: 
        !           398: NTSTATUS
        !           399: Q117iClearIO(
        !           400:     IN OUT PIRP Irp
        !           401:     );
        !           402: 
        !           403: NTSTATUS
        !           404: Q117iTranslateError(
        !           405:     IN PDEVICE_OBJECT DeviceObject,
        !           406:     IN STATUS Retval
        !           407:     );
        !           408: 
        !           409: VOID
        !           410: Q117iResetInterruptEvent(
        !           411:     IN PTAPE_EXTENSION TapeExtension
        !           412:     );
        !           413: 
        !           414: VOID
        !           415: Q117iResetFDC(
        !           416:     IN PTAPE_EXTENSION TapeExtension
        !           417:     );
        !           418: 
        !           419: VOID
        !           420: Q117iDLockUnlockDMA(
        !           421:     IN PTAPE_EXTENSION TapeExtension,
        !           422:     IN BOOLEAN Lock
        !           423:     );
        !           424: 
        !           425: VOID
        !           426: hio_ProgramDMA(
        !           427:     IN PTAPE_EXTENSION TapeExtension,
        !           428:     IN PIRP Irp,
        !           429:     IN BOOLEAN WriteOperation
        !           430:     );
        !           431: 
        !           432: VOID
        !           433: hio_FlushDMA(
        !           434:     IN PTAPE_EXTENSION TapeExtension,
        !           435:     IN PIRP Irp,
        !           436:     IN BOOLEAN WriteOperation
        !           437:     );
        !           438: 
        !           439: VOID
        !           440: Q117iShortTimer(
        !           441:     IN QIC_TIME StallTime
        !           442:     );
        !           443: 
        !           444: STATUS
        !           445: Q117iSleep(
        !           446:     IN PTAPE_EXTENSION TapeExtension,
        !           447:     IN QIC_TIME WaitTime,
        !           448:     IN BOOLEAN InterruptSleep
        !           449:     );
        !           450: 
        !           451: STATUS
        !           452: Q117iDLocateDrv(
        !           453:     IN PTAPE_EXTENSION TapeExtension
        !           454:     );
        !           455: 
        !           456: STATUS
        !           457: Q117iDDeselect(
        !           458:     IN PTAPE_EXTENSION TapeExtension
        !           459:     );
        !           460: 
        !           461: STATUS
        !           462: Q117iConvertFirmwareError(
        !           463:     IN FIRMWARE_ERROR FirmwareError
        !           464:     );
        !           465: 
        !           466: STATUS
        !           467: Q117iSetDriveMode(
        !           468:     IN PTAPE_EXTENSION TapeExtension,
        !           469:     IN CHAR Mode
        !           470:     );
        !           471: 
        !           472: STATUS
        !           473: Q117iProgramFDC(
        !           474:     IN PTAPE_EXTENSION TapeExtension,
        !           475:     IN UCHAR *Command,
        !           476:     IN SHORT Length,
        !           477:     IN BOOLEAN Result
        !           478:     );
        !           479: 
        !           480: STATUS
        !           481: Q117iConfigureDrive(
        !           482:     IN PTAPE_EXTENSION TapeExtension
        !           483:     );
        !           484: 
        !           485: STATUS
        !           486: Q117iConfigureFDC(
        !           487:     IN PTAPE_EXTENSION TapeExtension
        !           488:     );
        !           489: 
        !           490: STATUS
        !           491: Q117iSelectDrive(
        !           492:     IN PTAPE_EXTENSION TapeExtension
        !           493:     );
        !           494: 
        !           495: STATUS
        !           496: Q117iDeselectDrive(
        !           497:     IN PTAPE_EXTENSION TapeExtension
        !           498:     );
        !           499: 
        !           500: STATUS
        !           501: Q117iDFmt(
        !           502:     IN PTAPE_EXTENSION TapeExtension,
        !           503:     IN PIRP Irp,
        !           504:     IN OUT PIO_REQUEST Ioqucrnt
        !           505:     );
        !           506: 
        !           507: STATUS
        !           508: Q117iFormatTrack(
        !           509:     IN PTAPE_EXTENSION TapeExtension,
        !           510:     IN PIRP Irp,
        !           511:     IN SHORT Track,
        !           512:     IN OUT PIO_REQUEST Ioqucrnt
        !           513:     );
        !           514: 
        !           515: STATUS
        !           516: Q117iFormatSegment(
        !           517:     IN PTAPE_EXTENSION TapeExtension,
        !           518:     IN PIRP Irp,
        !           519:     IN OUT PIO_REQUEST Ioqucrnt,
        !           520:     IN UCHAR Cylinder,
        !           521:     IN UCHAR Head,
        !           522:     IN UCHAR Sector
        !           523:     );
        !           524: 
        !           525: STATUS
        !           526: Q117iWriteReferenceBurst(
        !           527:     IN PTAPE_EXTENSION TapeExtension
        !           528:     );
        !           529: 
        !           530: STATUS
        !           531: Q117iReadWrite(
        !           532:     IN PTAPE_EXTENSION TapeExtension,
        !           533:     IN OUT PIO_REQUEST Ioqucrnt,
        !           534:     IN OUT PIRP Irp
        !           535:     );
        !           536: 
        !           537: STATUS
        !           538: Q117iCalcPosition(
        !           539:     IN PTAPE_EXTENSION TapeExtension,
        !           540:     IN ULONG Block,
        !           541:     IN UCHAR Number
        !           542:     );
        !           543: 
        !           544: VOID
        !           545: Q117iGetRetryCounts(
        !           546:     IN PTAPE_EXTENSION TapeExtension,
        !           547:     IN DRIVER_COMMAND Command
        !           548:     );
        !           549: 
        !           550: VOID
        !           551: Q117iNextGoodSectors(
        !           552:     IN PTAPE_EXTENSION TapeExtension
        !           553:     );
        !           554: 
        !           555: STATUS
        !           556: Q117iRW_Timeout(
        !           557:     IN PTAPE_EXTENSION TapeExtension,
        !           558:     IN OUT PIO_REQUEST Ioqucrnt,
        !           559:     IN STATUS *Status
        !           560:     );
        !           561: 
        !           562: STATUS
        !           563: Q117iRW_Normal(
        !           564:     IN PTAPE_EXTENSION TapeExtension,
        !           565:     IN OUT PIO_REQUEST Ioqucrnt,
        !           566:     OUT STATUS *Status
        !           567:     );
        !           568: 
        !           569: STATUS
        !           570: Q117iRetryCode(
        !           571:     IN PTAPE_EXTENSION TapeExtension,
        !           572:     IN OUT PIO_REQUEST Ioqucrnt,
        !           573:     OUT FDC_STATUS *FdcStatus,
        !           574:     OUT STATUS *Status
        !           575:     );
        !           576: 
        !           577: STATUS
        !           578: Q117iNextTry(
        !           579:     IN PTAPE_EXTENSION TapeExtension,
        !           580:     IN DRIVER_COMMAND Command
        !           581:     );
        !           582: 
        !           583: STATUS
        !           584: Q117iSetBack(
        !           585:     IN PTAPE_EXTENSION TapeExtension,
        !           586:     IN DRIVER_COMMAND Command
        !           587:     );
        !           588: 
        !           589: STATUS
        !           590: Q117iStartTape(
        !           591:     IN PTAPE_EXTENSION TapeExtension
        !           592:     );
        !           593: 
        !           594: STATUS
        !           595: Q117iReadFDC(
        !           596:     IN PTAPE_EXTENSION TapeExtension,
        !           597:     OUT UCHAR *Status,
        !           598:     OUT SHORT *Length
        !           599:     );
        !           600: 
        !           601: VOID
        !           602: Q117iResetFDC(
        !           603:     IN PTAPE_EXTENSION TapeExtension
        !           604:     );
        !           605: 
        !           606: STATUS
        !           607: Q117iGetDriveError(
        !           608:     IN PTAPE_EXTENSION TapeExtension
        !           609:     );
        !           610: 
        !           611: STATUS
        !           612: Q117iReport(
        !           613:     IN PTAPE_EXTENSION TapeExtension,
        !           614:     IN CHAR Command,
        !           615:     OUT USHORT  *ReportData,
        !           616:     IN SHORT   ReportSize,
        !           617:     OUT CHAR *ESDRetry
        !           618:     );
        !           619: 
        !           620: STATUS
        !           621: Q117iWaitCommandComplete(
        !           622:     IN PTAPE_EXTENSION TapeExtension,
        !           623:     IN QIC_TIME WaitTime
        !           624:     );
        !           625: 
        !           626: 
        !           627: STATUS
        !           628: Q117iGetStatus(
        !           629:     IN PTAPE_EXTENSION TapeExtension,
        !           630:     OUT UCHAR *StatReg3
        !           631:     );
        !           632: 
        !           633: STATUS
        !           634: Q117iPauseTape(
        !           635:     IN PTAPE_EXTENSION TapeExtension
        !           636:     );
        !           637: 
        !           638: STATUS
        !           639: Q117iSeek(
        !           640:     IN PTAPE_EXTENSION TapeExtension
        !           641:     );
        !           642: 
        !           643: STATUS
        !           644: Q117iChangeTrack(
        !           645:     IN PTAPE_EXTENSION TapeExtension,
        !           646:     IN SHORT dest_track
        !           647:     );
        !           648: 
        !           649: STATUS
        !           650: Q117iReadIDRepeat(
        !           651:     IN PTAPE_EXTENSION TapeExtension
        !           652:     );
        !           653: 
        !           654: STATUS
        !           655: Q117iDoReadID(
        !           656:     IN PTAPE_EXTENSION TapeExtension,
        !           657:     IN QIC_TIME ReadIdDelay,
        !           658:     OUT FDC_STATUS *ReadIdStatus
        !           659:     );
        !           660: 
        !           661: VOID
        !           662: Q117iGetComFirmStr(
        !           663:     IN PTAPE_EXTENSION TapeExtension,
        !           664:     OUT CHAR **ptr,
        !           665:     IN SHORT index
        !           666:     );
        !           667: 
        !           668: STATUS
        !           669: Q117iLogicalBOT(
        !           670:     IN PTAPE_EXTENSION TapeExtension
        !           671:     );
        !           672: 
        !           673: STATUS
        !           674: Q117iAdjustTapeZone(
        !           675:     IN PTAPE_EXTENSION TapeExtension,
        !           676:     IN SHORT TapePosition
        !           677:     );
        !           678: 
        !           679: STATUS
        !           680: Q117iHighSpeedSeek(
        !           681:     IN PTAPE_EXTENSION TapeExtension
        !           682:     );
        !           683: 
        !           684: STATUS
        !           685: Q117iWaitSeek(
        !           686:     IN PTAPE_EXTENSION TapeExtension,
        !           687:     IN SHORT SeekDelay
        !           688:     );
        !           689: 
        !           690: STATUS
        !           691: Q117iReceiveByte(
        !           692:     IN PTAPE_EXTENSION TapeExtension,
        !           693:     IN SHORT ReceiveLength,
        !           694:     OUT USHORT *ReceiveData
        !           695:     );
        !           696: 
        !           697: STATUS
        !           698: Q117iWaitActive(
        !           699:     IN PTAPE_EXTENSION TapeExtension
        !           700:     );
        !           701: 
        !           702: STATUS
        !           703: Q117iTapeCommands(
        !           704:     IN PTAPE_EXTENSION TapeExtension,
        !           705:     IN OUT PIO_REQUEST Ioqucrnt,
        !           706:     IN OUT PIRP Irp
        !           707:     );
        !           708: 
        !           709: STATUS
        !           710: Q117iDEject(
        !           711:     IN PTAPE_EXTENSION TapeExtension
        !           712:     );
        !           713: 
        !           714: STATUS
        !           715: Q117iDReten(
        !           716:     IN PTAPE_EXTENSION TapeExtension
        !           717:     );
        !           718: 
        !           719: STATUS
        !           720: Q117iDFast_DSlow(
        !           721:     IN PTAPE_EXTENSION TapeExtension,
        !           722:     IN DRIVER_COMMAND Command
        !           723:     );
        !           724: 
        !           725: STATUS
        !           726: Q117iDGetRev(
        !           727:     IN PTAPE_EXTENSION TapeExtension,
        !           728:     OUT PUCHAR Version
        !           729:     );
        !           730: 
        !           731: STATUS
        !           732: Q117iDGetCap(
        !           733:     IN PTAPE_EXTENSION TapeExtension,
        !           734:     OUT struct S_O_DGetCap *Capacity
        !           735:     );
        !           736: 
        !           737: STATUS
        !           738: Q117iDComFirm(
        !           739:     IN PTAPE_EXTENSION TapeExtension,
        !           740:     IN OUT PUCHAR CommandString
        !           741:     );
        !           742: 
        !           743: STATUS
        !           744: Q117iDSndWPro(
        !           745:     IN PTAPE_EXTENSION TapeExtension
        !           746:     );
        !           747: 
        !           748: STATUS
        !           749: Q117iDSndReel(
        !           750:     IN PTAPE_EXTENSION TapeExtension
        !           751:     );
        !           752: 
        !           753: STATUS
        !           754: Q117iDGetCart(
        !           755:     IN PTAPE_EXTENSION TapeExtension,
        !           756:     OUT PUCHAR TapeType
        !           757:     );
        !           758: 
        !           759: STATUS
        !           760: Q117iDChkDrv(
        !           761:     IN PTAPE_EXTENSION TapeExtension,
        !           762:     OUT PUCHAR DriveType
        !           763:     );
        !           764: 
        !           765: STATUS
        !           766: Q117iDGetSpeed(
        !           767:     IN PTAPE_EXTENSION TapeExtension,
        !           768:     OUT struct S_O_DGetSpeed *XferRate
        !           769:     );
        !           770: 
        !           771: STATUS
        !           772: Q117iDStatus(
        !           773:     IN PTAPE_EXTENSION TapeExtension,
        !           774:     OUT struct S_O_DStatus *DriveStatus
        !           775:     );
        !           776: 
        !           777: STATUS
        !           778: Q117iDGetFDC(
        !           779:     IN PTAPE_EXTENSION TapeExtension,
        !           780:     OUT PUCHAR FdcType
        !           781:     );
        !           782: 
        !           783: STATUS
        !           784: Q117iDGetDriveInfo(
        !           785:     IN PTAPE_EXTENSION TapeExtension,
        !           786:     OUT struct S_O_DMiscInfo *MiscInfoPtr
        !           787:     );
        !           788: 
        !           789: STATUS
        !           790: Q117iDChkFmt(
        !           791:     IN PTAPE_EXTENSION TapeExtension
        !           792:     );
        !           793: 
        !           794: STATUS
        !           795: Q117iDReportProtoVer(
        !           796:     IN PTAPE_EXTENSION TapeExtension,
        !           797:     OUT PUCHAR  ProtoVer
        !           798:     );
        !           799: 
        !           800: STATUS Q117iDFndDrv(
        !           801:     IN PTAPE_EXTENSION TapeExtension
        !           802:     );
        !           803: 
        !           804: STATUS
        !           805: Q117iClearTapeError(
        !           806:     IN PTAPE_EXTENSION TapeExtension
        !           807:     );
        !           808: 
        !           809: STATUS Q117iLookForDrive(
        !           810:     IN PTAPE_EXTENSION TapeExtension,
        !           811:     IN UCHAR DriveSelector,
        !           812:     IN BOOLEAN WaitForTape
        !           813:     );
        !           814: 
        !           815: STATUS Q117iGetDriveType(
        !           816:     IN PTAPE_EXTENSION TapeExtension
        !           817:     );
        !           818: 
        !           819: STATUS Q117iGetDriveSize(
        !           820:     IN PTAPE_EXTENSION TapeExtension,
        !           821:     IN BOOLEAN ReportFailed,
        !           822:     IN USHORT VendorId,
        !           823:     IN UCHAR Signature
        !           824:     );
        !           825: 
        !           826: STATUS Q117iNewTape(
        !           827:     IN PTAPE_EXTENSION TapeExtension
        !           828:     );
        !           829: 
        !           830: STATUS
        !           831: Q117iReadWrtProtect(
        !           832:     IN PTAPE_EXTENSION TapeExtension,
        !           833:     OUT SHORT *WriteProtect
        !           834:     );
        !           835: 
        !           836: STATUS
        !           837: Q117iGetTapeParameters(
        !           838:     IN PTAPE_EXTENSION TapeExtension
        !           839:     );
        !           840: 
        !           841: VOID
        !           842: Q117iCalcFmtSegmentsAndTracks(
        !           843:     IN PTAPE_EXTENSION TapeExtension
        !           844:     );
        !           845: 
        !           846: STATUS
        !           847: Q117iMtnPreamble(
        !           848:     IN PTAPE_EXTENSION TapeExtension,
        !           849:     IN BOOLEAN Select
        !           850:     );
        !           851: 
        !           852: STATUS
        !           853: Q117iGetDriveInfo(
        !           854:     IN PTAPE_EXTENSION TapeExtension
        !           855:     );
        !           856: 
        !           857: STATUS
        !           858: Q117iStopTape(
        !           859:     IN PTAPE_EXTENSION TapeExtension
        !           860:     );
        !           861: 
        !           862: STATUS
        !           863: Q117iSendByte(
        !           864:     IN PTAPE_EXTENSION TapeExtension,
        !           865:     IN FIRMWARE_CMD Command
        !           866:     );
        !           867: 
        !           868: STATUS
        !           869: Q117iSenseSpeed(
        !           870:     IN PTAPE_EXTENSION TapeExtension
        !           871:     );
        !           872: 
        !           873: VOID
        !           874: Q117iDCR_Out(
        !           875:     IN PTAPE_EXTENSION TapeExtension,
        !           876:     IN SHORT Speed
        !           877:     );
        !           878: 
        !           879: VOID
        !           880: Q117iExtractFloppyConfig(
        !           881:     IN OUT PCONFIG_DATA ConfigData,
        !           882:     IN PDEVICE_OBJECT DeviceObject
        !           883:     );
        !           884: 
        !           885: STATUS
        !           886: Q117iRecalibrateFDC(
        !           887:     IN PTAPE_EXTENSION TapeExtension
        !           888:     );
        !           889: 
        !           890: VOID
        !           891: q117iUpdateRegistryInfo(
        !           892:     IN PTAPE_EXTENSION TapeExtension
        !           893:     );

unix.superglobalmegacorp.com

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