|
|
1.1 ! root 1: /*++ ! 2: ! 3: Copyright (c) 1993 - Colorado Memory Systems, Inc. ! 4: All Rights Reserved ! 5: ! 6: Module Name: ! 7: ! 8: protos.h ! 9: ! 10: Abstract: ! 11: ! 12: Prototypes for internal functions of the High-Level portion (data ! 13: formatter) of the QIC-117 device driver. ! 14: ! 15: Revision History: ! 16: ! 17: ! 18: --*/ ! 19: ! 20: STATUS ! 21: q117Format( ! 22: OUT LONG *NumberBad, ! 23: IN UCHAR DoFormat, ! 24: IN PQIC40_VENDOR_UNIQUE VendorUnique, ! 25: IN OUT PQ117_CONTEXT Context ! 26: ); ! 27: ! 28: STATUS ! 29: q117ReqIO( ! 30: IN PIO_REQUEST IoRequest, ! 31: IN PSEGMENT_BUFFER BufferInfo, ! 32: IN PQ117_CONTEXT Context ! 33: ); ! 34: ! 35: STATUS ! 36: q117WaitIO( ! 37: IN PIO_REQUEST IoRequest, ! 38: IN PQ117_CONTEXT Context ! 39: ); ! 40: ! 41: STATUS ! 42: q117DoIO( ! 43: IN PIO_REQUEST IoRequest, ! 44: IN PSEGMENT_BUFFER BufferInfo, ! 45: IN PQ117_CONTEXT Context ! 46: ); ! 47: ! 48: STATUS ! 49: q117AbortIo( ! 50: IN PQ117_CONTEXT Context, ! 51: IN PKEVENT DoneEvent, ! 52: IN PIO_STATUS_BLOCK IoStatus ! 53: ); ! 54: ! 55: STATUS ! 56: q117AbortIoDone( ! 57: IN PQ117_CONTEXT Context, ! 58: IN PKEVENT DoneEvent ! 59: ); ! 60: ! 61: STATUS ! 62: q117CheckDrive( ! 63: IN PQ117_CONTEXT Context ! 64: ); ! 65: ! 66: STATUS ! 67: q117DoCmd( ! 68: IN OUT PIO_REQUEST IoRequest, ! 69: IN CHAR Command, ! 70: IN PVOID Data, ! 71: IN PQ117_CONTEXT Context ! 72: ); ! 73: ! 74: STATUS ! 75: q117EndRest( ! 76: IN PQ117_CONTEXT Context ! 77: ); ! 78: ! 79: STATUS ! 80: q117MapBadBlock ( ! 81: IN PIO_REQUEST IoRequest, ! 82: OUT PVOID *DataPointer, ! 83: IN OUT USHORT *BytesLeft, ! 84: IN OUT SEGMENT *CurrentSegment, ! 85: IN OUT USHORT *Remainder, ! 86: IN OUT PQ117_CONTEXT Context ! 87: ); ! 88: ! 89: STATUS ! 90: q117NewTrkRC( ! 91: IN OUT PQ117_CONTEXT Context ! 92: ); ! 93: ! 94: STATUS ! 95: q117SelectVol( ! 96: IN PVOLUME_TABLE_ENTRY TheVolumeTable, ! 97: IN PQ117_CONTEXT Context ! 98: ); ! 99: ! 100: STATUS ! 101: q117UpdateHeader( ! 102: IN PTAPE_HEADER Header, ! 103: IN PQ117_CONTEXT Context ! 104: ); ! 105: ! 106: STATUS ! 107: q117Update( ! 108: IN OUT PQ117_CONTEXT Context ! 109: ); ! 110: ! 111: STATUS ! 112: q117DoUpdateBad( ! 113: IN OUT PQ117_CONTEXT Context ! 114: ); ! 115: ! 116: STATUS ! 117: q117DoUpdateMarks( ! 118: IN OUT PQ117_CONTEXT Context ! 119: ); ! 120: ! 121: STATUS ! 122: q117GetMarks( ! 123: IN OUT PQ117_CONTEXT Context ! 124: ); ! 125: ! 126: STATUS ! 127: q117FillTapeBlocks( ! 128: IN OUT DRIVER_COMMAND Command, ! 129: IN SEGMENT CurrentSegment, ! 130: IN SEGMENT EndSegment, ! 131: IN OUT PVOID Buffer, ! 132: IN SEGMENT FirstGood, ! 133: IN SEGMENT SecondGood, ! 134: IN PSEGMENT_BUFFER BufferInfo, ! 135: IN PQ117_CONTEXT Context ! 136: ); ! 137: STATUS ! 138: q117IssIOReq( ! 139: IN OUT PVOID Data, ! 140: IN DRIVER_COMMAND Command, ! 141: IN LONG Block, ! 142: IN OUT PSEGMENT_BUFFER BufferInfo, ! 143: IN OUT PQ117_CONTEXT Context ! 144: ); ! 145: ! 146: BOOLEAN ! 147: q117QueueFull( ! 148: IN PQ117_CONTEXT Context ! 149: ); ! 150: ! 151: BOOLEAN ! 152: q117QueueEmpty( ! 153: IN PQ117_CONTEXT Context ! 154: ); ! 155: ! 156: PVOID ! 157: q117GetFreeBuffer( ! 158: OUT PSEGMENT_BUFFER *BufferInfo, ! 159: IN PQ117_CONTEXT Context ! 160: ); ! 161: ! 162: PVOID ! 163: q117GetLastBuffer( ! 164: IN PQ117_CONTEXT Context ! 165: ); ! 166: ! 167: PIO_REQUEST ! 168: q117Dequeue( ! 169: IN DEQUEUE_TYPE Type, ! 170: IN OUT PQ117_CONTEXT Context ! 171: ); ! 172: ! 173: VOID ! 174: q117ClearQueue( ! 175: IN OUT PQ117_CONTEXT Context ! 176: ); ! 177: ! 178: VOID ! 179: q117QueueSingle( ! 180: IN OUT PQ117_CONTEXT Context ! 181: ); ! 182: ! 183: VOID ! 184: q117QueueNormal( ! 185: IN OUT PQ117_CONTEXT Context ! 186: ); ! 187: ! 188: PIO_REQUEST ! 189: q117GetCurReq( ! 190: IN PQ117_CONTEXT Context ! 191: ); ! 192: ! 193: ULONG ! 194: q117GetQueueIndex( ! 195: IN PQ117_CONTEXT Context ! 196: ); ! 197: ! 198: VOID ! 199: q117SetQueueIndex( ! 200: IN ULONG Index, ! 201: OUT PQ117_CONTEXT Context ! 202: ); ! 203: ! 204: STATUS ! 205: q117LoadTape ( ! 206: IN OUT PTAPE_HEADER*HeaderPointer, ! 207: IN OUT PQ117_CONTEXT Context ! 208: ); ! 209: ! 210: STATUS ! 211: q117InitFiler ( ! 212: IN OUT PQ117_CONTEXT Context ! 213: ); ! 214: ! 215: void ! 216: q117GetBadSectors ( ! 217: IN OUT PQ117_CONTEXT Context ! 218: ); ! 219: ! 220: STATUS ! 221: q117ReadHeaderSegment ( ! 222: OUT PTAPE_HEADER*HeaderPointer, ! 223: IN OUT PQ117_CONTEXT Context ! 224: ); ! 225: ! 226: STATUS ! 227: q117WriteTape( ! 228: IN OUT PVOID FromWhere, ! 229: IN OUT ULONG HowMany, ! 230: IN OUT PQ117_CONTEXT Context ! 231: ); ! 232: ! 233: STATUS ! 234: q117EndBack( ! 235: IN OUT PQ117_CONTEXT Context ! 236: ); ! 237: ! 238: STATUS ! 239: q117ReadVolumeEntry( ! 240: PVOLUME_TABLE_ENTRY VolumeEntry, ! 241: PQ117_CONTEXT Context ! 242: ); ! 243: ! 244: VOID ! 245: q117FakeDataSize( ! 246: IN OUT PVOLUME_TABLE_ENTRY TheVolumeTable, ! 247: IN PQ117_CONTEXT Context ! 248: ); ! 249: ! 250: STATUS ! 251: q117AppVolTD( ! 252: IN OUT PVOLUME_TABLE_ENTRY TheVolumeTable, ! 253: IN OUT PQ117_CONTEXT Context ! 254: ); ! 255: ! 256: STATUS ! 257: q117SelectTD( ! 258: IN OUT PQ117_CONTEXT Context ! 259: ); ! 260: ! 261: STATUS ! 262: q117Start ( ! 263: IN OUT PQ117_CONTEXT Context ! 264: ); ! 265: ! 266: STATUS ! 267: q117Stop ( ! 268: IN OUT PQ117_CONTEXT Context ! 269: ); ! 270: ! 271: STATUS ! 272: q117OpenForWrite ( ! 273: IN OUT PQ117_CONTEXT Context ! 274: ); ! 275: ! 276: STATUS ! 277: q117EndWriteOperation ( ! 278: IN OUT PQ117_CONTEXT Context ! 279: ); ! 280: ! 281: NTSTATUS ! 282: q117OpenForRead ( ! 283: IN ULONG StartPosition, ! 284: IN OUT PQ117_CONTEXT Context, ! 285: IN PDEVICE_OBJECT DeviceObject ! 286: ); ! 287: ! 288: STATUS ! 289: q117EndReadOperation ( ! 290: IN OUT PQ117_CONTEXT Context ! 291: ); ! 292: ! 293: STATUS ! 294: q117StartBack( ! 295: IN OUT PVOLUME_TABLE_ENTRY TheVolumeTable, ! 296: IN PQ117_CONTEXT Context ! 297: ); ! 298: ! 299: STATUS ! 300: q117StartAppend( ! 301: IN OUT ULONG BytesAlreadyThere, ! 302: IN PVOLUME_TABLE_ENTRY TheVolumeTable, ! 303: IN OUT PQ117_CONTEXT Context ! 304: ); ! 305: ! 306: STATUS ! 307: q117StartComm( ! 308: OUT PVOLUME_TABLE_ENTRY TheVolumeTable, ! 309: IN OUT PQ117_CONTEXT Context ! 310: ); ! 311: ! 312: STATUS ! 313: q117SelVol ( ! 314: PVOLUME_TABLE_ENTRY TheVolumeTable, ! 315: PQ117_CONTEXT Context ! 316: ); ! 317: ! 318: STATUS ! 319: q117ReadTape ( ! 320: OUT PVOID ToWhere, ! 321: IN OUT ULONG *HowMany, ! 322: IN OUT PQ117_CONTEXT Context ! 323: ); ! 324: ! 325: NTSTATUS ! 326: q117ConvertStatus( ! 327: IN PDEVICE_OBJECT DeviceObject, ! 328: IN STATUS status ! 329: ); ! 330: ! 331: VOID ! 332: q117SetTpSt( ! 333: PQ117_CONTEXT Context ! 334: ); ! 335: ! 336: STATUS ! 337: q117GetEndBlock ( ! 338: OUT PVOLUME_TABLE_ENTRY TheVolumeTable, ! 339: OUT LONG *NumberVolumes, ! 340: IN PQ117_CONTEXT Context ! 341: ); ! 342: ! 343: STATUS ! 344: q117BuildHeader( ! 345: OUT PQIC40_VENDOR_UNIQUE VendorUnique, ! 346: IN SEGMENT *HeaderSect, ! 347: IN OUT PTAPE_HEADER Header, ! 348: IN PQ117_CONTEXT Context ! 349: ); ! 350: ! 351: NTSTATUS ! 352: q117IoCtlGetMediaParameters ( ! 353: IN PDEVICE_OBJECT DeviceObject, ! 354: IN PIRP Irp ! 355: ); ! 356: ! 357: NTSTATUS ! 358: q117IoCtlSetMediaParameters ( ! 359: IN PDEVICE_OBJECT DeviceObject, ! 360: IN PIRP Irp ! 361: ); ! 362: ! 363: NTSTATUS ! 364: q117IoCtlGetDriveParameters ( ! 365: IN PDEVICE_OBJECT DeviceObject, ! 366: IN PIRP Irp ! 367: ); ! 368: ! 369: NTSTATUS ! 370: q117IoCtlSetDriveParameters ( ! 371: IN PDEVICE_OBJECT DeviceObject, ! 372: IN PIRP Irp ! 373: ); ! 374: ! 375: NTSTATUS ! 376: q117IoCtlWriteMarks ( ! 377: IN PDEVICE_OBJECT DeviceObject, ! 378: IN PIRP Irp ! 379: ); ! 380: ! 381: NTSTATUS ! 382: q117IoCtlSetPosition ( ! 383: IN PDEVICE_OBJECT DeviceObject, ! 384: IN PIRP Irp ! 385: ); ! 386: ! 387: NTSTATUS ! 388: q117FindMark( ! 389: ULONG Type, ! 390: LONG Number, ! 391: PQ117_CONTEXT Context, ! 392: IN PDEVICE_OBJECT DeviceObject ! 393: ); ! 394: ! 395: NTSTATUS ! 396: q117SeekToOffset( ! 397: ULONG Offset, ! 398: PQ117_CONTEXT Context, ! 399: IN PDEVICE_OBJECT DeviceObject ! 400: ); ! 401: ! 402: NTSTATUS ! 403: q117IoCtlErase ( ! 404: IN PDEVICE_OBJECT DeviceObject, ! 405: IN PIRP Irp ! 406: ); ! 407: ! 408: NTSTATUS ! 409: q117IoCtlPrepare ( ! 410: IN PDEVICE_OBJECT DeviceObject, ! 411: IN PIRP Irp ! 412: ); ! 413: ! 414: NTSTATUS ! 415: q117IoCtlGetStatus ( ! 416: IN PDEVICE_OBJECT DeviceObject, ! 417: IN PIRP Irp ! 418: ); ! 419: ! 420: NTSTATUS ! 421: q117IoCtlGetPosition ( ! 422: IN PDEVICE_OBJECT DeviceObject, ! 423: IN PIRP Irp ! 424: ); ! 425: ! 426: STATUS ! 427: q117CheckNewTape ( ! 428: PQ117_CONTEXT Context ! 429: ); ! 430: ! 431: STATUS ! 432: q117NewTrkBk( ! 433: PQ117_CONTEXT Context ! 434: ); ! 435: ! 436: STATUS ! 437: q117GetTapeCapacity( ! 438: struct S_O_DGetCap *ptr, ! 439: PQ117_CONTEXT Context ! 440: ); ! 441: ! 442: VOID ! 443: q117RdsInitReed ( ! 444: VOID ! 445: ); ! 446: ! 447: UCHAR ! 448: q117RdsMultiplyTuples ( ! 449: IN UCHAR tup1, ! 450: IN UCHAR tup2 ! 451: ); ! 452: ! 453: UCHAR ! 454: q117RdsDivideTuples ( ! 455: IN UCHAR tup1, ! 456: IN UCHAR tup2 ! 457: ); ! 458: ! 459: UCHAR ! 460: q117RdsExpTuple ( ! 461: IN UCHAR tup1, ! 462: IN UCHAR xpnt ! 463: ); ! 464: ! 465: VOID ! 466: q117RdsMakeCRC ( ! 467: IN OUT UCHAR *Array, // pointer to 32K data area (segment) ! 468: IN UCHAR Count // number of sectors (1K blocks)(1-32) ! 469: ); ! 470: ! 471: BOOLEAN ! 472: q117RdsReadCheck ( ! 473: IN UCHAR *Array, // pointer to 32K data area (segment) ! 474: IN UCHAR Count // number of sectors (1K blocks)(1-32) ! 475: ); ! 476: ! 477: BOOLEAN ! 478: q117RdsCorrect( ! 479: IN OUT UCHAR *Array, // pointer to 32K data area (segment) ! 480: IN UCHAR Count, // number of good sectors in segment (4-32) ! 481: IN UCHAR CRCErrors, // number of crc errors ! 482: IN UCHAR e1, ! 483: IN UCHAR e2, ! 484: IN UCHAR e3 // sectors where errors occurred ! 485: ); ! 486: ! 487: VOID ! 488: q117RdsGetSyndromes ( ! 489: IN OUT UCHAR *Array, // pointer to 32K data area (segment) ! 490: IN UCHAR Count, // number of good sectors in segment (4-32) ! 491: IN UCHAR *ps1, ! 492: IN UCHAR *ps2, ! 493: IN UCHAR *ps3 ! 494: ); ! 495: ! 496: BOOLEAN ! 497: q117RdsCorrectFailure ( ! 498: IN OUT UCHAR *Array, // pointer to 32K data area (segment) ! 499: IN UCHAR Count, // number of good sectors in segment (4-32) ! 500: IN UCHAR s1, ! 501: IN UCHAR s2, ! 502: IN UCHAR s3 ! 503: ); ! 504: ! 505: BOOLEAN ! 506: q117RdsCorrectOneError ( ! 507: IN OUT UCHAR *Array, // pointer to 32K data area (segment) ! 508: IN UCHAR Count, // number of good sectors in segment (4-32) ! 509: IN UCHAR ErrorLocation, ! 510: IN UCHAR s1, ! 511: IN UCHAR s2, ! 512: IN UCHAR s3 ! 513: ); ! 514: ! 515: BOOLEAN ! 516: q117RdsCorrectTwoErrors ( ! 517: IN OUT UCHAR *Array, // pointer to 32K data area (segment) ! 518: IN UCHAR Count, // number of good sectors in segment (4-32) ! 519: IN UCHAR ErrorLocation1, ! 520: IN UCHAR ErrorLocation2, ! 521: IN UCHAR s1, ! 522: IN UCHAR s2, ! 523: IN UCHAR s3 ! 524: ); ! 525: ! 526: BOOLEAN ! 527: q117RdsCorrectThreeErrors ( ! 528: IN OUT UCHAR *Array, // pointer to 32K data area (segment) ! 529: IN UCHAR Count, // number of good sectors in segment (4-32) ! 530: IN UCHAR ErrorLocation1, ! 531: IN UCHAR ErrorLocation2, ! 532: IN UCHAR ErrorLocation3, ! 533: IN UCHAR s1, ! 534: IN UCHAR s2, ! 535: UCHAR s3 ! 536: ); ! 537: ! 538: BOOLEAN ! 539: q117RdsCorrectOneErrorAndOneFailure ( ! 540: IN OUT UCHAR *Array, // pointer to 32K data area (segment) ! 541: IN UCHAR Count, // number of good sectors in segment (4-32) ! 542: IN UCHAR ErrorLocation1, ! 543: IN UCHAR s1, ! 544: IN UCHAR s2, ! 545: IN UCHAR s3 ! 546: ); ! 547: ! 548: void ! 549: q117SpacePadString( ! 550: IN OUT CHAR *InputString, ! 551: IN LONG StrSize ! 552: ); ! 553: ! 554: STATUS ! 555: q117VerifyFormat( ! 556: IN OUT PQ117_CONTEXT Context ! 557: ); ! 558: ! 559: STATUS ! 560: q117EraseQ( ! 561: IN OUT PQ117_CONTEXT Context ! 562: ); ! 563: ! 564: STATUS ! 565: q117EraseS( ! 566: IN OUT PQ117_CONTEXT Context ! 567: ); ! 568: ! 569: VOID ! 570: q117ClearVolume ( ! 571: IN OUT PQ117_CONTEXT Context ! 572: ); ! 573: ! 574: STATUS ! 575: q117SkipBlock ( ! 576: IN OUT ULONG *HowMany, ! 577: IN OUT PQ117_CONTEXT Context ! 578: ); ! 579: ! 580: STATUS ! 581: q117ReconstructSegment( ! 582: IN PIO_REQUEST IoReq, ! 583: IN PQ117_CONTEXT Context ! 584: ); ! 585: ! 586: STATUS ! 587: q117DoCorrect( ! 588: IN PVOID DataBuffer, ! 589: IN ULONG BadSectorMap, ! 590: IN ULONG SectorsInError ! 591: ); ! 592: ! 593: UCHAR ! 594: q117CountBits( ! 595: IN PQ117_CONTEXT Context, ! 596: IN SEGMENT Segment, ! 597: ULONG Map ! 598: ); ! 599: ! 600: ULONG q117ReadBadSectorList ( ! 601: IN PQ117_CONTEXT Context, ! 602: IN SEGMENT Segment ! 603: ); ! 604: ! 605: USHORT ! 606: q117GoodDataBytes( ! 607: IN SEGMENT Segment, ! 608: IN PQ117_CONTEXT Context ! 609: ); ! 610: ! 611: NTSTATUS ! 612: q117AllocatePermanentMemory( ! 613: PQ117_CONTEXT Context, ! 614: PADAPTER_OBJECT AdapterObject, ! 615: ULONG NumberOfMapRegisters ! 616: ); ! 617: ! 618: STATUS ! 619: q117GetTemporaryMemory( ! 620: PQ117_CONTEXT Context ! 621: ); ! 622: ! 623: VOID ! 624: q117FreeTemporaryMemory( ! 625: PQ117_CONTEXT Context ! 626: ); ! 627: ! 628: NTSTATUS ! 629: q117IoCtlReadAbs ( ! 630: IN PDEVICE_OBJECT DeviceObject, ! 631: IN PIRP Irp ! 632: ); ! 633: ! 634: NTSTATUS ! 635: q117IoCtlWriteAbs ( ! 636: IN PDEVICE_OBJECT DeviceObject, ! 637: IN PIRP Irp ! 638: ); ! 639: ! 640: STATUS ! 641: q117UpdateBadMap( ! 642: IN OUT PQ117_CONTEXT Context, ! 643: IN SEGMENT Segment, ! 644: IN ULONG BadSectors ! 645: ); ! 646: ! 647: VOID ! 648: q117BadMapToBadList( ! 649: IN SEGMENT Segment, ! 650: IN ULONG BadSectors, ! 651: IN BAD_LIST_PTR BadListPtr ! 652: ); ! 653: ! 654: ULONG ! 655: q117BadListEntryToSector( ! 656: IN UCHAR *ListEntry ! 657: );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.