back2root:ibm-pc-ms-dos:hardware:informations:file-system-format
System File Table (Undocumented)
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 |
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”.
-
back2root/ibm-pc-ms-dos/hardware/informations/file-system-format.txt · Dernière modification : 2023/03/03 17:52 de frater