summaryrefslogtreecommitdiff
path: root/v4.0/src/INC/IFSSYM.INC
diff options
context:
space:
mode:
authorGravatar Mark Zbikowski2024-04-25 21:24:10 +0100
committerGravatar Microsoft Open Source2024-04-25 22:32:27 +0000
commit2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch)
tree80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/INC/IFSSYM.INC
parentMerge pull request #430 from jpbaltazar/typoptbr (diff)
downloadms-dos-main.tar.gz
ms-dos-main.tar.xz
ms-dos-main.zip
MZ is back!HEADmain
Diffstat (limited to 'v4.0/src/INC/IFSSYM.INC')
-rw-r--r--v4.0/src/INC/IFSSYM.INC670
1 files changed, 670 insertions, 0 deletions
diff --git a/v4.0/src/INC/IFSSYM.INC b/v4.0/src/INC/IFSSYM.INC
new file mode 100644
index 0000000..716c651
--- /dev/null
+++ b/v4.0/src/INC/IFSSYM.INC
@@ -0,0 +1,670 @@
1 PAGE ,132 ;
2; SCCSID = @(#)ifssym.inc 1.0 87/05/11
3;******************************************************************************
4; IFS Symbol File
5;
6; REVISION HISTORY:
7; A000 Original version 4.00 May 1987
8; A001 DCR 158 - merge unc info in attach start/status requests 8/87 RGAZZIA
9; A002 DCR 187 - ctrl req renumber, make attach type byte 8/87 RGAZZIA
10; A003 PTM 764 - printer attach problems 8/87 RGAZZIA
11; A004 PTM ???? - Write Only locks on Read/Write 10/27 FEIGENBAUM
12; A005 DCR 285 - remove Extended Attribute/Lock support 1/88 RG
13; A006 PTM 2827 error proc 1/88 RG
14; A007 PTM 3334- reset envirn subfunc to eop 2/88 RMG
15; A008 PTM 3745- commit across net problem due to sft flags problem 3/88 RMG
16; A009 PTM 3810- new sft unique id in sff 3/88 RMG
17; A010 PTM 4392- ditch sf_iomode,cp 4/18/88 RMG
18;
19; LOD - 414
20;
21;******************************************************************************
22 ;AN000;
23SUBTTL IFS Driver Header ;AN000;
24PAGE ;AN000;
25 ;AN000;
26IFSHEADER STRUC ;AN000;
27IFS_NEXT DD -1 ; Next header in list (-1=end) ;AN000;
28IFS_NAME DB " " ; IFS name ;AN000;
29IFS_ATTRIBUTE DW ? ; Attributes ;AN000;
30IFS_VERSION DW 0 ; Request level supported ;AN000;
31IFS_DOSCALL@ DD ? ; DOS interface routine ;AN000;
32 ; (set by TUPPER before the init call) ;AN000;
33IFS_CALL@ DW ? ; Function entry point ;AN000;
34IFSHEADER ENDS ;AN000;
35 ;AN000;
36; ifs_attribute equates ;AN000;
37 ;AN000;
38IFSDEVICE EQU 8000H ; Supports single device/file functions ;AN000;
39IFSDISK EQU 4000H ; Supports multi-file functions ;AN000;
40IFSUNC EQU 2000H ; Support UNC (nameless) connection ;AN000;
41IFSREMOTE EQU 0800H ; File system is remote ;AN000;
42IFSFILTER EQU 0400H ; FS will filter (if off, use DOS ;AN000;
43 ; standard, cap & 8.3) ;AN000;
44IFSIOCTL EQU 0002H ; Supports IOCTL functions ;AN000;
45IFSUSESHARE EQU 0001H ; Uses DOS share support (vs own share) ;AN000;
46 ;AN000;
47 ;AN000;
48SUBTTL IFSRH - IFS Request Header ;AN000;
49PAGE ;AN000;
50 ;AN000;
51; IFS Request Header ;AN000;
52 ;AN000;
53IFSRH STRUC ;AN000;
54IFSR_LENGTH DW ? ; Total length of request ;AN000;
55IFSR_FUNCTION DB ? ; Requested function ;AN000;
56IFSR_RETCODE DW ? ; Explicit error ;AN000;
57IFSR_RETCLASS DB ? ; Error class ;AN000;
58IFSR_RESV1 DB 16 DUP(0) ; DOS reserved ;AN000;
59IFSR_FCN_PARMS DB 50 DUP(0) ; Additional parameters ;AN000;
60IFSRH ENDS ;AN000;
61 ;AN000;
62; IFSR_FUNCTION codes ;AN000;
63; Control requests: ;AN000;
64IFSINIT EQU 1 ;AN000;
65IFSATTSTART EQU 2 ;AN000;
66IFSATTSTAT EQU 3 ;AC002;
67IFSATTEND EQU 4 ;AC002;
68IFSEXECAPI EQU 5 ;AC002;
69IFSCRITMSG EQU 6 ;AC002;
70IFSUPDATECB EQU 7 ;AC002;
71 ;AN000;
72; IFSR_APIFUNC codes: ;AN000;
73; Int 21 mapped requests: ;AN000;
74IFSDRIVERESET EQU 1 ;AN000;
75IFSDISKATTR EQU 2 ;AN000;
76IFSMKDIR EQU 3 ;AN000;
77IFSRMDIR EQU 4 ;AN000;
78IFSCHDIR EQU 5 ;AN000;
79IFSDELFILE EQU 6 ;AN000;
80IFSRENFILE EQU 7 ;AN000;
81IFSSEARCHFILE EQU 8 ;AN000;
82IFSOPENFILE EQU 9 ;AN000;
83IFSLSEEKFILE EQU 10 ;AN000;
84IFSREADFILE EQU 11 ;AN000;
85IFSWRITEFILE EQU 12 ;AN000;
86IFSLOCKFILE EQU 13 ;AN000;
87IFSCLOSEFILE EQU 14 ;AN000;
88IFSFILEATTR EQU 15 ;AN000;
89IFSDEPIOCTL EQU 16 ;AN000;
90IFSDEVIOCTL EQU 17 ;AN000;
91IFSEOP EQU 18 ;AN000;
92IFSEOCID EQU 19 ;AN000;
93 ;AN000;
94SUBTTL Control Request Parameter Macro ;AN000;
95PAGE ;AN000;
96 ;AN000;
97IFSR_FCN_DEF MACRO fcn ;AN000;
98 ;AN000;
99 IFIDN <fcn>,<INIT> ;AN000;
100 IFSR_PARMS@ = DWORD PTR IFSR_FCN_PARMS ; command parameters ;AN000;
101 IFSR_RESSIZE = WORD PTR IFSR_FCN_PARMS+4 ; driver total size ;AN000;
102 LENGTH_INIT EQU IFSR_RESSIZE-IFSRH+2 ;AN000;
103 ;AN000;
104 ELSE ;AN000;
105 IFIDN <fcn>,<ATTSTART> ;AN000;
106 IFSR_TYPE = BYTE PTR IFSR_FCN_PARMS ; attach type ;AC001;
107 IFSR_PARMS@ = DWORD PTR IFSR_FCN_PARMS+2 ; command parameters ;AN000;
108 IFSR_DEVICE_CB@ = DWORD PTR IFSR_FCN_PARMS+6 ; CD/DF ;AN000;
109 IFSR_USER_WORD = WORD PTR IFSR_FCN_PARMS+10 ; for unc deviceless attach ;AN001;
110 LENGTH_ATTSTART EQU IFSR_USER_WORD-IFSRH+2 ;AC001;/;AC004;
111 ;AN000;
112 ELSE ;AN000;
113 IFIDN <fcn>,<ATTSTAT> ;AN000;
114 IFSR_TYPE = BYTE PTR IFSR_FCN_PARMS ; attach type ;AC001;
115 IFSR_PARMS@ = DWORD PTR IFSR_FCN_PARMS+2 ; command parameters ;AN000;
116 IFSR_DEVICE_CB@ = DWORD PTR IFSR_FCN_PARMS+6 ; CD/DF ;AN000;
117 IFSR_USER_WORD = WORD PTR IFSR_FCN_PARMS+10 ; for unc deviceless attach ;AN001;
118 IFSR_MAX_XMITT_SIZE = WORD PTR IFSR_FCN_PARMS+12 ; redir-maximum transmit size ;AN001;
119 IFSR_NET_NAME_ID = WORD PTR IFSR_FCN_PARMS+14 ; redir-net name id ;AN001;
120 IFSR_LSN = WORD PTR IFSR_FCN_PARMS+16 ; redir-low byte=local session # ;AN001;
121 IFSR_DEVICE_STATUS = BYTE PTR IFSR_FCN_PARMS+18 ; redir-interesting bits ;AN001;
122 LENGTH_ATTSTAT EQU IFSR_DEVICE_STATUS-IFSRH+2 ;AC001;
123 ;AN000;
124 ELSE ;AN000;
125 IFIDN <fcn>,<ATTEND> ;AN000;
126 IFSR_DEVICE_CB@ = DWORD PTR IFSR_FCN_PARMS ; CD/DF ;AN000;
127 IFSR_NAME@ = DWORD PTR IFSR_FCN_PARMS+4 ; UNC deviceless detach ;AN000;
128 LENGTH_ATTEND EQU IFSR_NAME@-IFSRH+4 ;AN000;
129 ;AN000;
130 ELSE ;AN000;
131 IFIDN <fcn>,<EXECAPI> ;AN000;
132 IFSR_APIFUNC = BYTE PTR IFSR_FCN_PARMS ; API function code ;AN000;
133 IFSR_ERROR_CLASS = BYTE PTR IFSR_FCN_PARMS+1 ; DOS extended error class ;AN000;
134 IFSR_ERROR_ACTION = BYTE PTR IFSR_FCN_PARMS+2 ; DOS extended error action ;AN000;
135 IFSR_ERROR_LOCUS = BYTE PTR IFSR_FCN_PARMS+3 ; DOS extended error locus ;AN000;
136 IFSR_ALLOWED = BYTE PTR IFSR_FCN_PARMS+4 ; DOS extended error locus ;AN000;
137 IFSR_I24_COUNT = BYTE PTR IFSR_FCN_PARMS+5 ; critical error retry count ;AN000;
138 ; 0=first time ;AN000;
139 IFSR_I24_RESP = BYTE PTR IFSR_FCN_PARMS+6 ; critical error response ;AN000;
140 ; 0=ignore 1=retry ;AN000;
141 IFSR_DEVICE_CB@ = DWORD PTR IFSR_FCN_PARMS+8 ; device (CD or DF) ;AN000;
142 IFSR_OPEN_CB@ = DWORD PTR IFSR_FCN_PARMS+12 ; open file instance (SF) ;AN000;
143 IFSR_API_PARMS = BYTE PTR IFSR_FCN_PARMS+16 ;AN000;
144 ;AN000;
145 ELSE ;AN000;
146 IFIDN <fcn>,<CRITMSG> ;AN000;
147 IFSR_MSG@ = DWORD PTR IFSR_FCN_PARMS ; message buffer address ;AN000;
148 IFSR_MSG_TYPE = BYTE PTR IFSR_FCN_PARMS+4 ; message type ;AN000;
149 ; 1=message is printed in form ;AN000;
150 ; <message> ;AN000;
151 ; Abort,Retry,Ignore,Fail ;AN000;
152 ; 0=message is printed in form ;AN000;
153 ; <message> error (read/writ)ing (drive/device) XXX ; ;AN000;
154 ; Abort,Retry,Ignore,Fail ;AN000;
155 ;AN000;
156 LENGTH_CRITMSG EQU IFSR_MSG_TYPE-IFSRH+2 ;AN000;
157 ;AN000;
158 ELSE ;AN000;
159 IFIDN <fcn>,<UPDATECB> ;AN000;
160 IFSR_CB@ = DWORD PTR IFSR_FCN_PARMS ; control block address ;AN000;
161 IFSR_TYPE = BYTE PTR IFSR_FCN_PARMS+4 ; control block type ;AN000;
162 IFSOPEN EQU 0 ; open instance (SFT) entry ;AN000;
163 IFSCB EQU -1 ; see control block type field ;AN000;
164 LENGTH_UPDATECB EQU IFSR_TYPE-IFSRH+2 ;AN000;
165 ;AN000;
166 ENDIF ;AN000;
167 ENDIF ;AN000;
168 ENDIF ;AN000;
169 ENDIF ;AN000;
170 ENDIF ;AN000;
171 ENDIF ;AN000;
172 ENDIF ;AN000;
173 ENDM ;AN000;
174 ;AN000;
175SUBTTL INT 21H Mapped Request Parameter Macro ;AN000;
176PAGE ;AN000;
177 ;AN000;
178IFSR_API_DEF MACRO fcn ;AN000;
179 ;AN000;
180 IFIDN <fcn>,<DRIVERESET> ;AN000;
181 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 0=flush ;AN000;
182 LENGTH_DRIVERESET EQU IFSR_FUNC-IFSRH+2 ;AN000;
183 ;AN000;
184 ELSE ;AN000;
185 IFIDN <fcn>,<DISKATTR> ;AN000;
186 IFSR_ALLOCUNITS = WORD PTR IFSR_API_PARMS ; # allocation units ;AN000;
187 IFSR_ALLOCSIZE = WORD PTR IFSR_API_PARMS+2 ; allocation unit sectors ;AN000;
188 IFSR_SECTSIZE = WORD PTR IFSR_API_PARMS+4 ; sector size ;AN000;
189 IFSR_AVAILALLOC = WORD PTR IFSR_API_PARMS+6 ; free allocation units ;AN000;
190 IFSR_FSID = BYTE PTR IFSR_API_PARMS+8 ; file system media id ;AN000;
191 LENGTH_DISKATTR EQU IFSR_FSID-IFSRH+2 ;AN000;
192 ;AN000;
193 ELSE ;AN000;
194 IFIDN <fcn>,<MKDIR> ;AN000;
195 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS ; asciiz name to process ;AN000;
196 LENGTH_MKDIR EQU IFSR_NAME@-IFSRH+4 ;AN000;
197 ;AN000;
198 ELSE ;AN000;
199 IFIDN <fcn>,<RMDIR> ;AN000;
200 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS ; asciiz name to process ;AN000;
201 LENGTH_RMDIR EQU IFSR_NAME@-IFSRH+4 ;AN000;
202 ;AN000;
203 ELSE ;AN000;
204 IFIDN <fcn>,<CHDIR> ;AN000;
205 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS ; asciiz name to process ;AN000;
206 LENGTH_CHDIR EQU IFSR_NAME@-IFSRH+4 ;AN000;
207 ;AN000;
208 ELSE ;AN000;
209 IFIDN <fcn>,<DELFILE> ;AN000;
210 IFSR_MATCHATTR_47 = WORD PTR IFSR_API_PARMS ; format 00000000e0a00shr ;AN000;
211 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS+2 ; file to delete ;AN000;
212 LENGTH_DELFILE EQU IFSR_NAME@-IFSRH+4 ;AN000;
213 ;AN000;
214 ELSE ;AN000;
215 IFIDN <fcn>,<RENFILE> ;AN000;
216 IFSR_MATCHATTR = WORD PTR IFSR_API_PARMS ; format 00000000e0a00shr ;AN000;
217 IFSR_NAME1@ = DWORD PTR IFSR_API_PARMS+2 ; file to rename ;AN000;
218 IFSR_NAME2@ = DWORD PTR IFSR_API_PARMS+6 ; new file name ;AN000;
219 LENGTH_RENFILE EQU IFSR_NAME2@-IFSRH+4 ;AN000;
220 ;AN000;
221 ELSE ;AN000;
222 IFIDN <fcn>,<SEARCHFILE> ;AN000;
223 IFSR_SUBFUNC = BYTE PTR IFSR_API_PARMS ; 1=first, 2=next ;AN000;
224 IFSR_CONTINFO@ = DWORD PTR IFSR_API_PARMS+2 ; continuation info addr ;AN000;
225 IFSR_MATCHATTR = WORD PTR IFSR_API_PARMS+6 ; format 0000000re0advshr (1st) ;AN000;
226 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS+8 ; asciiz name to process (1st) ;AN000;
227 LENGTH_SEARCHFILE EQU IFSR_NAME@-IFSRH+4 ;AN000;
228 ;AN000;
229 ELSE ;AN000;
230 IFIDN <fcn>,<OPENFILE> ;AN000;
231 IFSR_MODE = WORD PTR IFSR_API_PARMS ; open mode ;AN000;
232 ; format: 0WF0000CISSS0AAA ;AN000;
233 ; AAA=access code 0=read,1=write ;AN000;
234 ; 2=read/write ;AN000;
235 ; SSS=sharing mode 0=compatibility ;AN000;
236 ; 1=deny r/w, 2=deny write ;AN000;
237 ; 3=deny read, 4=deny none ;AN000;
238 ; I 0=pass handle to child, 1=no inheri;AN000;t
239 ; C 0=validate cp, 1=no cp check ;AN000;
240 ; F 0=int 24H, 1=return error on ;AN000;
241 ; this open & any I/O to this handle ;AN000;
242 ; W 0=no commit, 1=auto-commit on ;AN000;
243 ; write ;AN000;
244 IFSR_FLAG = WORD PTR IFSR_API_PARMS+2 ; function control; format=CE ;AN000;
245 ; C=does not exist action ;AN000;
246 ; 0=fail, 1=create ;AN000;
247 ; E=exists action ;AN000;
248 ; 0=fail, 1=open, 2=replace/open ;AN000;
249 IFSR_CP = WORD PTR IFSR_API_PARMS+4 ; global code page ;AN000;
250 IFSR_CPSW = BYTE PTR IFSR_API_PARMS+6 ; CPSW flag ;AN000;
251 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS+8 ; asciiz name to open ;AN000;
252 IFSR_PARMS@ = DWORD PTR IFSR_API_PARMS+12 ; format:
253 ; DD EA address
254 ; DW #parms
255 ; DB IOMODE ID ;AN000;
256 ; DW IO Mode ;AN000;
257 IFSR_MATCHATTR = WORD PTR IFSR_API_PARMS+16 ; format 00000000e0advshr ;AN000;
258 IFSR_ACTION = WORD PTR IFSR_API_PARMS+18 ;AN000;
259 LENGTH_OPENFILE EQU IFSR_ACTION-IFSRH+2 ;AN000;
260 ;AN000;
261 ELSE ;AN000;
262 IFIDN <fcn>,<LSEEKFILE> ;AN000;
263 IFSR_MODE = BYTE PTR IFSR_API_PARMS ; see INT 21H AH=42H ;AN000;
264 IFSR_POSITION = DWORD PTR IFSR_API_PARMS+2 ; displacement of LSEEK ;AN000;
265 LENGTH_LSEEKFILE EQU IFSR_POSITION-IFSRH+4 ;AN000;
266 ;AN000;
267 ELSE ;AN000;
268 IFIDN <fcn>,<READFILE> ;AN000;
269;IFSR_MODE = BYTE PTR IFSR_API_PARMS ;AD005;
270 IFSR_COUNT = WORD PTR IFSR_API_PARMS+2 ;AN000;
271 IFSR_BUFFER@ = DWORD PTR IFSR_API_PARMS+4 ;AN000;
272 LENGTH_READFILE EQU IFSR_BUFFER@-IFSRH+4 ;AN000;
273 ;AN000;
274 ELSE ;AN000;
275 IFIDN <fcn>,<WRITEFILE> ;AN000;
276;IFSR_MODE = BYTE PTR IFSR_API_PARMS ;AD005;
277 IFSR_COUNT = WORD PTR IFSR_API_PARMS+2 ;AN000;
278 IFSR_BUFFER@ = DWORD PTR IFSR_API_PARMS+4 ;AN000;
279 LENGTH_WRITEFILE EQU IFSR_BUFFER@-IFSRH+4 ;AN000;
280 ;AN000;
281 ELSE ;AN000;
282 IFIDN <fcn>,<LOCKFILE> ;AN000;
283;IFSR_MODE = BYTE PTR IFSR_API_PARMS ; bit 0: 0=lock all operations ;AD005;
284 ; 1=lock only write operations ;AD005;
285 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 0=LOCK, 1=UNLOCK ;AC005;
286;IFSR_COUNT = WORD PTR IFSR_API_PARMS+2 ;AD005;
287;IFSR_RANGE@ = DWORD PTR IFSR_API_PARMS+4 ;AD005;
288 IFSR_LK_POSITION = DWORD PTR IFSR_API_PARMS+2 ;AN005;
289 IFSR_LK_LENGTH = DWORD PTR IFSR_API_PARMS+6 ;AN005;
290 LENGTH_LOCKFILE EQU IFSR_LK_LENGTH-IFSRH+4 ;AC005;
291 ;AN000;
292 ELSE ;AN000;
293 IFIDN <fcn>,<CLOSEFILE> ;AN000;
294 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 0=CLOSE, 1=COMMIT ;AN000;
295 LENGTH_CLOSEFILE EQU IFSR_FUNC-IFSRH+2 ;AN000;
296 ;AN000;
297 ELSE ;AN000;
298 IFIDN <fcn>,<FILEATTR> ;AN000;
299 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 0=get, 1=set by handle ;AN000;
300 ; 2=get, 3=set by name ;AN000;
301 IFSR_SUBFUNC = BYTE PTR IFSR_API_PARMS+2 ; 0=none,2=EA List, 3-EA names ;AN000;
302 ; 2,3 used only on IFSR_FUNC=0,1 ;AN000;
303 IFSR_BUFFER1@ = DWORD PTR IFSR_API_PARMS+4 ; if IFSR_TYPE=2,3 ;AN000;
304 IFSR_BUFFER2@ = DWORD PTR IFSR_API_PARMS+8 ; if IFSR_TYPE=2 ;AN000;
305 IFSR_COUNT = WORD PTR IFSR_API_PARMS+12 ; if IFSR_TYPE=2,3 ;AN000;
306 ; Following present only if IFSR_FUNC=2,3 ;AN000;
307 IFSR_MATCHATTR = WORD PTR IFSR_API_PARMS+14 ; format 0000000re0advshr ;AN000;
308 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS+16 ; ASCIIZ file name ;AN000;
309 IFSR_SIZE = DWORD PTR IFSR_API_PARMS+20 ; file size ;AN000;
310 IFSR_DATE = WORD PTR IFSR_API_PARMS+24 ; file date ;AN000;
311 IFSR_TIME = WORD PTR IFSR_API_PARMS+26 ; file time ;AN000;
312 IFSR_ATTR = WORD PTR IFSR_API_PARMS+28 ; format 0000000re0advshr ;AN000;
313 LENGTH_FILEATTR EQU IFSR_ATTR-IFSRH+2 ;AN000;
314 ;AN000;
315 ELSE ;AN000;
316 IFIDN <fcn>,<DEPIOCTL> ;AN000;
317 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 00 Generic IOCTL by device # ;AN000;
318 ; 01 Generic IOCTL by handle ;AN000;
319 ; 02 FS IOCTL query OS type ;AN000;
320 IFSR_BUFFER@ = DWORD PTR IFSR_API_PARMS+2 ; set on queries ;AN000;
321 IFSR_BUFSIZE = WORD PTR IFSR_API_PARMS+6 ; Buffer size set for IFSR_FUNC=2 ;AN000;
322 ; FUNC dependent parameters ;AN000;
323 ; For generic ;AN000;
324 IFSR_CATEGORY = BYTE PTR IFSR_API_PARMS+8 ; generic subfunctions ;AN000;
325 IFSR_CTLFUNC = BYTE PTR IFSR_API_PARMS+9 ; see INT 21H AH=6BH ;AN000;
326 LENGTH_DEPIOCTL EQU IFSR_CTLFUNC-IFSRH+1 ;AN000;
327 ;AN000;
328 ELSE ;AN000;
329 IFIDN <fcn>,<DEVIOCTL> ;AN000;
330 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 00 Generic IOCTL by device # ;AN000;
331 ; 01 Generic IOCTL by handle ;AN000;
332 ; 02 FS IOCTL query OS type ;AN000;
333 IFSR_BUFFER@ = DWORD PTR IFSR_API_PARMS+2 ; set on queries ;AN000;
334 IFSR_BUFSIZE = WORD PTR IFSR_API_PARMS+6 ; buffer size set for IFSR_FUNC=2 ;AN000;
335 ; FUNC dependent parameters ;AN000;
336 ; For generic ;AN000;
337 IFSR_CATEGORY = BYTE PTR IFSR_API_PARMS+8 ; generic subfunctions ;AN000;
338 IFSR_CTLFUNC = BYTE PTR IFSR_API_PARMS+9 ; see INT 21H AH=6BH ;AN000;
339 LENGTH_DEVIOCTL EQU IFSR_CTLFUNC-IFSRH+1 ;AN000;
340 ;AN000;
341 ELSE ;AN000;
342 IFIDN <fcn>,<EOP> ;AN000;
343 IFSR_PID = WORD PTR IFSR_API_PARMS ; process ID ;AN000;
344 IFSR_SUBFUNC = BYTE PTR IFSR_API_PARMS+2 ; 0=NORMAL EXIT, 1=ABORT EXIT ;AN000;
345 LENGTH_EOP EQU IFSR_SUBFUNC-IFSRH+2 ;AN000;
346 ;AN000;
347 ELSE ;AN000;
348 IFIDN <fcn>,<EOCID> ;AN000;
349 IFSR_UID = WORD PTR IFSR_API_PARMS ; process ID ;AN000;
350 LENGTH_EOCID EQU IFSR_UID-IFSRH+2 ;AN000;
351 ;AN000;
352 ENDIF ;AN000;
353 ENDIF ;AN000;
354 ENDIF ;AN000;
355 ENDIF ;AN000;
356 ENDIF ;AN000;
357 ENDIF ;AN000;
358 ENDIF ;AN000;
359 ENDIF ;AN000;
360 ENDIF ;AN000;
361 ENDIF ;AN000;
362 ENDIF ;AN000;
363 ENDIF ;AN000;
364 ENDIF ;AN000;
365 ENDIF ;AN000;
366 ENDIF ;AN000;
367 ENDIF ;AN000;
368 ENDIF ;AN000;
369 ENDIF ;AN000;
370 ENDIF ;AN000;
371 ENDM ;AN000;
372 ;AN000;
373SUBTTL Request Data ;AN000;
374PAGE ;AN000;
375 ;AN000;
376; Attach types ;AN000;
377;;;aliasTYPE_ALIAS EQU 0 ;AN000;
378TYPE_DEVICE EQU 1 ;AN000;
379TYPE_DRIVE EQU 2 ;AN000;
380TYPE_NET_DEVICE EQU 3 ;AN000;
381TYPE_NET_DRIVE EQU 4 ;AN000;
382; Attach cmds ;AN000;
383GET_MODE EQU 0 ;AN000;
384SET_MODE EQU 1 ;AN000;
385GET_ASSIGN_LIST EQU 2 ;AN000;
386DEFINE_MACRO EQU 3 ;AN000;
387CANCEL_ATTACH EQU 4 ;AN000;
388 ;AN000;
389ATTACH_PARMS STRUC ;AN000;
390AP_COUNT DW ? ;AN000;
391AP_STRING DB ? ;AN000;
392ATTACH_PARMS ENDS ;AN000;
393 ;AN000;
394; Critical Error Message types ;AN000;
395CRIT_MSG_TYPE_1 equ 1
396TYPE1 EQU 1 ;AN000;
397TYPE0 EQU 0 ;AN000;
398 ;AN000;
399; Control Block types ;AN000;
400CBTYPE_SFF EQU 0 ;AN000;
401CBTYPE_CD EQU 1 ;AN000;
402CBTYPE_DF EQU 2 ;AN000;
403CBTYPE_DUMMYCD EQU 3 ;AN000;
404 ;AN000;
405; Drive Reset equates ;AN000;
406FUNC_FLUSH EQU 0 ;AN000;
407FUNC_FLUSH_INVALIDATE EQU 1 ;AN000;
408 ;AN000;
409; Search File equates ;AN000;
410IFSSEARCH_FIRST EQU 1 ;AN000;
411IFSSEARCH_NEXT EQU 2 ;AN000;
412 ;AN000;
413; Open/Create type ;AN000;
414TYPE_NONE EQU 0 ;AN000;
415NOTEXIST_ACT_FAIL = 0 ;+BAF
416NOTEXIST_ACT_CREATE = 1 ;+BAF
417EXIST_ACT_FAIL = 0 ;+BAF
418EXIST_ACT_OPEN = 1 ;+BAF
419EXIST_ACT_REP_OPEN = 2 ;+BAF
420
421FILE_OPENED = 1
422FILE_CREATED = 2
423FILE_REPLACED = 3
424 ;AN000;
425; Read/Write equates ;AN000;
426;MODE_READ EQU 0 ;AD005;
427;MODE_WRITE EQU 0 ;AD005;
428;MODE_LOCK_READ EQU 1 ;AD005;
429;MODE_WRITE_UNLOCK EQU 1 ;AD005;
430;MODE_WRITE_SFPOS EQU 00H ;AD005;
431;MODE_WRITE_SFSIZE EQU 02H ;AD005;
432;MODE_ADD_MASK EQU 00000010B ; do I need this??? ;AD005;
433 ;AN000;
434; Lock equates ;AN000;
435;MODE_LOCK_ALL EQU 0 ;AD005;
436;MODE_LOCK_WRITE EQU 1 ;AD005;
437FUNC_LOCK EQU 0 ;AN000;
438FUNC_UNLOCK EQU 1 ;AN000;
439;MODE_ADD_MASK EQU 00000010B ;AD005;
440;MODE_WO_MASK EQU 10000000B ;AN004; BAF ;AD005;
441;LOCK_RANGE_STRUC STRUC ;AD005;
442; IFSR_LOCK_POSITION DD ? ;AD005;
443; IFSR_LOCK_LENGTH DD ? ;AD005;
444;LOCK_RANGE_STRUC ENDS ;AD005;
445
446 ;AN000;
447; Close equates ;AN000;
448FUNC_CLOSE EQU 0 ;AN000;
449FUNC_COMMIT EQU 1 ;AN000;
450 ;AN000;
451; LSeek equates ;AN000;
452MODE2 EQU 2 ;AN000;
453 ;AN000;
454; File Attribute equates ;AN000;
455FUNC_GET_BY_HANDLE EQU 0 ;AN000;
456FUNC_SET_BY_HANDLE EQU 1 ;AN000;
457FUNC_GET_BY_NAME EQU 2 ;AN000;
458FUNC_SET_BY_NAME EQU 3 ;AN000;
459SUBFUNC_INLINE EQU 0 ;AN000;
460SUBFUNC_EA EQU 2 ;AN000;
461SUBFUNC_EA_NAMES EQU 3 ;AN000;
462 ;AN000;
463; FS Dependent IOCTL ;AN000;
464GEN_IOCTL_BY_DEVNUM EQU 0 ;AN000;
465GEN_IOCTL_BY_HANDLE EQU 1 ;AN000;
466QUERY_OS_TYPE EQU 2 ;AN000;
467CATEGORY_FS EQU 0 ;AN000;
468CATEGORY_REDIR EQU 1 ;AN000;
469PRINTER_SET_STRING EQU 2 ;AN000;
470PRINTER_GET_STRING EQU 3 ;AN000;
471PRINTER_SET_FLAGS EQU 4 ;AN000;
472PRINTER_GET_FLAGS EQU 5 ;AN000;
473CTLFUNC_PRINTER_SET_STRING EQU 00100001B ;AN000;
474CTLFUNC_PRINTER_GET_STRING EQU 00000001B ;AN000;
475CTLFUNC_PRINTER_SET_FLAGS EQU 00100010B ;AN000;
476CTLFUNC_PRINTER_GET_FLAGS EQU 00000010B ;AN000;
477CTLFUNC_DEVECHOCHECK EQU 00000011B ;AN000;
478CTLFUNC_GET_UNC_ITEM EQU 00000100B ;AN000;
479CTLFUNC_DEVCLOSE EQU 00000101B ;AN000;
480CTLFUNC_DEVOPER EQU 00000110B ;AN000;
481CTLFUNC_PRINT_ON EQU 00100111B ;AN000;
482CTLFUNC_PRINT_OFF EQU 00000111B ;AN000;
483CLOSE_SPOOL_FILES EQU 9 ;AN000;
484LENGTH_DEVECHOCHECK_BUFFER EQU 1 ;AN000;
485 ;AN000;
486; FS Device IOCTL ;AN000;
487READ_DEVICE EQU 2 ;AN000;
488WRITE_DEVICE EQU 3 ;AN000;
489CHAR_GENERIC EQU 0CH ;AN000;
490BLOCK_GENERIC EQU 0DH ;AN000;
491 ;AN000;
492; End of Process equates ;AN000;
493EOP_NORMAL EQU 0 ;AN000;
494EOP_ABORT EQU 1 ;AN000;
495RESET_ENVIRONMENT EQU 2
496 ;AN000;
497SUBTTL Request Return Classes/Codes ;AN000;
498PAGE ;AN000;
499 ;AN000;
500; IFS Request Return Codes ;AN000;
501IFSR_NO_ERROR EQU 0 ;AN000;
502IFSR_NONSPEC_ERROR EQU 1 ;AN000;
503IFSR_NOT_FOUND_ERROR EQU 2 ;AN000;
504IFSR_ACCESS_DENIED EQU 3 ;AN000;
505IFSR_DEVICE_TYPE_MISMATCH EQU 4 ;AN000;
506IFSR_NO_SUBFCN_SUPPORT EQU -2 ;AN000;
507IFSR_NO_FCN_SUPPORT EQU -1 ;AN000;
508 ;AN000;
509; IFS Request Return Classes ;AN000;
510IFSR_INT21H_ERROR EQU 1 ;AN000;
511IFSR_DRIVER_ERROR EQU 2 ;AN000;
512IFSR_INT21H_CRITER EQU 3 ;AN000;
513IFSR_DEVICE_ERROR EQU 4 ;AN006;
514IFSR_BAD_FORMAT EQU -1 ;AN000;
515
516;
517; Int 24H
518NO_RETRY = 0
519I24_RESP_IGNORE = 0
520I24_RESP_RETRY = 1
521
522 ;AN000;
523; IFS_DOSCALL@ function equates ;AN000;
524; Block Device Driver Requests ;AN000;
525CALL_INTERRUPT_ROUTINE EQU 1 ;AN000;
526READ_SECTORS EQU 2 ;AN000;
527WRITE_SECTORS EQU 3 ;AN000;
528FIND_SECTOR EQU 8 ;AN000;
529MARK_SECTOR_CHANGED EQU 9 ;AN000;
530; Buffer Cache Requests ;AN000;
531WRITE_DOS_BUFFER EQU 10 ;AN000;
532READ_DOS_BUFFER EQU 11 ;AN000;
533FREE_DOS_BUFFER EQU 12 ;AN000;
534FLUSH_DOS_BUFFERS EQU 13 ;AN000;
535; Get DOS Variable ;AN000;
536GET_DOS_VALUE EQU 32 ;AN000;
537ACTIVE_PROCESS_INFO EQU 1 ;AN000;
538CPSW_INFORMATION EQU 2 ;AN000;
539BREAK_INFORMATION EQU 3 ;AN000;
540VERIFY_INFORMATION EQU 4 ;AN000;
541CONFIG_SYS_VALUES EQU 5 ;AN000;
542 DOS_VALUE_BUFFER STRUC ;AN000;
543 VAL_BUF_SIZE DW 14 ;AN000;
544 VAL_BUF_FILES DW 0 ;AN000;
545 VAL_BUF_FCBS DW 0 ;AN000;
546 DW 0 ;AN000;
547 VAL_BUF_BUFS DW 0 ;AN000;
548 DW 0 ;AN000;
549 VAL_BUF_LDRV DW 0 ;AN000;
550 VAL_BUF_SSZ DW 0 ;AN000;
551 DOS_VALUE_BUFFER ENDS ;AN000;
552MACHINE_NAME EQU 6 ;AN000;
553COUNTRY_INFO EQU 7 ;AN000;
554SHARE_RETRY_COUNT EQU 8 ;AN000;
555; Get Assign Mode ;AN000;
556GET_ASSIGN_MODE EQU 33 ;AN000;
557DEVICE_MACRO = 3
558DRIVE_MACRO = 4
559PAUSE_MODE_ON = 1
560PAUSE_MODE_OFF = 0
561;
562DOS2NET_DATE = 34
563NET2DOS_DATE = 35
564DOS_STRCMP = 36
565DOS_STRCPY = 37
566USE_SYSTEM_TIMEDATE = 0
567USE_USER_TIMEDATE = 1
568;
569 ;AN000;
570 ;AN000;
571SUBTTL Pseudo Block Structures: SF, CD, DF ;AN000;
572PAGE ;AN000;
573; SFF - Pseudo SFT ;AN000;
574; This structure is used to pass pertinent SFT information ;AN000;
575; to IFS driver. ;AN000;
576 ;AN000;
577SFF STRUC ; Open File Control Block ;AN000;
578SFF_TYPE DB 0,0 ; Identifies SFF ;AN000;
579SFF_FLAGS DW ? ; Control flags ;AN000;
580 ; 4000H=don't set date/time on close ;AN009;
581 ; 0080H=device (vs file) ;AN009;
582 ; 0040H=File clean ;AN008;
583SFF_MODE DW ? ; Mode of access. ;AN000;
584 ; 8000H=FCB (vs handle)[this moved from flags];AC008;
585SFF_RESV1 DW ? ; IO mode. ;AC023; iomode
586SFF_ATTR DW ? ; File attr.FORMAT : 0000000re0advshr ;AN000;
587SFF_UID DW ? ; User ID ;AN000;
588SFF_PID DW ? ; Process ID ;AN000;
589SFF_SIZE DD ? ; File size ;AN000;
590SFF_POSITION DD ? ; Read/Write pointer ;AN000;
591SFF_TIME DW ? ; File time ;AN000;
592SFF_DATE DW ? ; File date ;AN000;
593SFF_NAME DB 8 DUP (?) ; Name ;AN000;
594SFF_EXT DB 3 DUP (?) ; Extension ;AN000;
595SFF_RESV2 DW 0 ; Code page ;AC024; cp
596SFF_SF_ID DW 0 ; Unique SFT entry identifier ;AN009;
597SFF_RESV DB 12 DUP(0) ; Reserved ;AC009;
598SFF_FSDA DB 8 DUP(?) ; File System Dependent Data Area ;AN000;
599SFF ENDS ;AN000;
600 ;AN000;
601; sff_flags bits
602SFF_Close_NoDate EQU 4000H ; 4000H=don't set date/time on close ;AN009;
603SFF_IsDevice EQU 0080H ; 0080H=device (vs file) ;AN009;
604SFF_FileClean EQU 0040H ; 0040H=File clean ;AN008;
605SFF_Device_Raw EQU 0020H ; 0020H=Device raw ;AN008;
606SFF_Net_Spool EQU 0000100000000000B
607; sff_mode bits
608SFF_IsFCB EQU 8000H ; 8000H=FCB (vs handle)[this moved from flags];AC008;
609
610; CD - Pseudo CDS ;AN000;
611; This structure is used to pass pertinent CDS information ;AN000;
612; to IFS driver. ;AN000;
613 ;AN000;
614CD STRUC ;AN000;
615CD_TYPE DB 1,0 ; Identifies CD ;AN000;
616CD_END DW ? ; End of assignment in CD_TEXT ;AN000;
617CD_TEXT DB 67 DUP (?) ; Text of assignment and curdir ;AN000;
618CD_RESV DB 5 DUP(0) ; Reserved ;AN000;
619CD_FSDA DB 8 DUP(?) ; File System Dependent Data Area ;AN000;
620CD ENDS ;AN000;
621 ;AN000;
622; DF - Pseudo DFL ;AN000;
623; This structure is used to pass pertinent DFL information ;AN000;
624; to IFS driver. ;AN000;
625
626DFL STRUC ;AN000;
627DFL_TYPE DB 2,0 ; Identifies DFL ;AN000;
628DFL_DEV_NAME DB 8 DUP (?) ; Device name ;AN000;
629DFL_FSDA DB 8 DUP (?) ; File System Dependent Data Area ;AN000;
630DFL ENDS ;AN000;
631 ;AN000;
632SUBTTL Search Continuation Information ;AN000;
633PAGE ;AN000;
634CONTINFO STRUC ;AN000;
635CI_SEARCH_FN DB 8 DUP(?) ; SEARCH FILE NAME ;AN000;
636CI_SEARCH_FN_EXT DB 3 DUP(?) ; SEARCH FILE EXTENSION ;AN000;
637CI_SEARCH_ATTR DB ? ; SEARCH ATTRIBUTE ;AN000;
638CI_FSDA DB 8 DUP(?) ; FSDA ;AN000;
639 ; Directory entry: ;AN000;
640CI_FOUND_FN DB 8 DUP(?) ; FOUND FILE NAME ;AN000;
641CI_FOUND_FN_EXT DB 3 DUP(?) ; FOUND FILE EXTENSION ;AN000;
642CI_FOUND_ATTRL DB ? ; FOUND ATTRIBUTE LOW ??? DB/DD ;AN000;
643CI_CP DW ? ; FILE CODE PAGE (OR 0) ;AN000;
644CI_RESV1 DW ? ; RESERVED ;AN000;
645CI_FOUND_ATTRH DB ? ; FOUND ATTRIBUTE HIGH ;AN000;
646CI_RESV2 DB 5 DUP(?) ; RESERVED ;AN000;
647CI_FILE_TIME DW ? ; FILE TIME ;AN000;
648CI_FILE_DATE DW ? ; FILE DATE ;AN000;
649CI_FSWORD DW ? ; MEANING FILE SYSTEM SPECIFIC ;AN000;
650 ; (STARTING CLUSTER IN FAT) ;AN000;
651CI_FILE_SIZE DD ? ; FILE SIZE ;AN000;
652CONTINFO ENDS ;AN000;
653
654
655CATEGORY_PRINTER EQU 5
656
657CTLFUNC_SELECT EQU 4AH
658CTLFUNC_QUERY_SELECTED EQU 6AH
659CTLFUNC_QUERY_PREPLIST EQU 6BH
660
661DEV_OPER_BUFFER STRUC
662 OPER_FUNC DB ?
663 TRUNC_FLAG DB ?
664DEV_OPER_BUFFER ENDS
665
666PACKET STRUC ; device ioctl buffer info
667 PACKLEN DW 2 ; length of packet in bytes
668 PACKCPID DW ? ; code page id
669PACKET ENDS
670