|
|
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: );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.