pointer to next system file table; offset of ffffh indicates last table in chain
04
word
number of file descriptors in table
06
nbytes
file descriptor table of the format (40 bytes each):
File Descriptor Table
Offset
Size
Description
00
byte
count of handles referring to this file or zero if file is no longer open
01
byte
open mode
02
byte
file attribute
03
byte
drive (1=A, 2=B:, …, 0=char device)
04
11bytes
filename in FCB format
0F
word
unknown
11
word
unknown
13
dword
file size
17
word
file date
19
word
file time
1B
byte
device attribute
1C
word
starting cluster of file (block device)
dword
pointer to device driver (if char device)
1E
word
if block device, relative cluster within file of the last cluster read; zero if file has never been read or written
20
word
absolute cluster number of current cluster
22
word
unknown
24
dword
current file position
DOS 3.x System File Table and FCB Table Format
Offset
Size
Description
00
dword
pointer to next system file table; offset of ffffh indicates last table in chain
04
word
number of file descriptors in table
06
nbytes
file descriptor table of the format (53 bytes each):
File Descriptor Table
Offset
Size
Description
00
word
count of handles referring to this file or zero if file is no longer open
02
word
open mode, bit 15 set if file id opened via FCB
04
byte
file attribute
05
word
device info word
07
dword
if char device pointer to device driver header if block device pointer to DOS Device Control Block
0B
word
starting cluster of file
0D
word
file time
0F
word
file date
11
dword
file size
15
dword
current file position
19
word
if block device, relative cluster within file of the last cluster read
1B
word
absolute cluster number of last cluster read zero if file has never been read or written
1D
word
sector number containing the directory entry
1F
byte
number of dir entry within sector
20
11bytes
filename in FCB format
2B
dword
SHARE pointer to previous SFT sharing same file
2F
word
SHARE number of network machine opening file
31
word
PSP segment of file owner
33
word
offset within SHARE code segment of sharing record 0000h = none
DOS 4.0+ System File Table and FCB Table
Offset
Size
Description
00
dword
pointer to next system file table; offset of ffffh indicates last table in chain
04
word
number of file descriptors in table
06
nbytes
file descriptor table of the format (59 bytes each):
File Descriptor Table
Offset
Size
Description
00
word
count of handles referring to this file or zero if file is no longer open
02
word
open mode, bit 15 set if file id opened via FCB
04
byte
file attribute
05
word
device info word
07
dword
if char device pointer to device driver header if block device pointer to DOS Device Control Block or REDIR data
0B
word
starting cluster of file
0D
word
file time
0F
word
file date
11
dword
file size
15
dword
current file position
19
dword
if network redirector, pointer to REDIRIFS record word if local block dev, relative cluster within file of the last cluster read
1B
dword
if local, sector number of directory entry
1F
byte
if local, number of directory entry within sector
20
11bytes
filename in FCB format
2B
dword
SHARE pointer to previous SFT sharing same file
2F
word
SHARE number of network machine opening file
31
word
PSP segment of file owner
33
word
offset within SHARE code seg of sharing record 0000h = none
35
word
absolute cluster number of last cluster read zero if file has never been read or written
37
dword
pointer to file IFS driver, NULL if native DOS
these structures are allocated by DOS during the scanning of the CONFIG.SYS file
INT 21h 67h can be used to allow an application to have more than 20 file handles; the total number of handles is limited still to the value of FILES=n in CONFIG.SYS
the structure of these fields is undocumented; I do not recommend relying on any of this information, instead use it as an aid in debugging
see Bibliography references to Bernd Schemmer and “Data Structures Used in IBM PC Compatibles and the PS/2”.