Table des matières
System File Table (Undocumented)
DOS 2.x System File 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 (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”.
- See INT 21,52