|
|
1.1 root 1: /*++
2:
3: Copyright (c) 1993 - Colorado Memory Systems, Inc.
4: All Rights Reserved
5:
6: Module Name:
7:
8: gtendblk.c
9:
10: Abstract:
11:
12: Calls SelectTD() once and ReadVolumeEntry() as many times as needed to
13: find out what the CurrentOperation.EndOfUsedTape is. Also calls EndRest() which will
14: verify the entire tape directory.
15:
16:
17: Revision History:
18:
19:
20:
21: --*/
22:
23: //
24: // include files
25: //
26:
27: #include <ntddk.h>
28: #include <ntddtape.h>
29: #include "common.h"
30: #include "q117.h"
31: #include "protos.h"
32:
33:
34: STATUS
35: q117GetEndBlock (
36: OUT PVOLUME_TABLE_ENTRY TheVolumeTable,
37: OUT LONG *NumberVolumes,
38: IN PQ117_CONTEXT Context
39: )
40:
41: /*++
42:
43: Routine Description:
44:
45: Calls SelectTD() once and ReadVolumeEntry() as many times as needed to
46: find out what the CurrentOperation.EndOfUsedTape is. Also calls EndRest() which will
47: verify the entire tape directory.
48:
49: Arguments:
50:
51: TheVolumeTable - Last volume on the tape
52:
53: NumberVolumes - Number of volumes on the tape
54:
55: Context - Current context of the driver.
56:
57: Return Value:
58:
59: NoErr, any Driver error except BadBlk,
60: <EndOfVol>, <LinkRC>, RdncUnsc.
61:
62: --*/
63:
64: {
65: VOLUME_TABLE_ENTRY cur_table;
66: STATUS ret; // Return value from other routines called.
67:
68: *NumberVolumes = 0;
69:
70: //
71: // This will initialize 'ActiveVolumeNumber' and 'CurrentOperation.EndOfUsedTape'.
72: // FMemErr, any Driver error except BadBlk, <EndOfVol>, RdncUnsc.
73: //
74:
75: ret=q117SelectTD(Context);
76:
77: while (ret == NoErr) {
78:
79: if (ret = q117ReadVolumeEntry(&cur_table,Context)) {
80:
81: //
82: // <FMemErr>, any Driver error except BadBlk, <LinkRC>,
83: // <EndOfVol>, RdncUnsc.
84: //
85:
86: if (ret != EndOfVol) {
87:
88: return(ret);
89:
90: }
91:
92: }
93:
94: if (ret != EndOfVol) {
95:
96: ++(*NumberVolumes);
97: *TheVolumeTable = cur_table;
98:
99: }
100: }
101:
102: if (ret && ret != EndOfVol) {
103:
104: return(ret);
105:
106: }
107:
108: ret=q117EndRest(Context);
109:
110: return(ret);
111: }
112:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.