add directory study
This commit is contained in:
107
study/sabre/os/files/FileSystems/LF3.txt
Normal file
107
study/sabre/os/files/FileSystems/LF3.txt
Normal file
@@ -0,0 +1,107 @@
|
||||
LONG FILENAMES
|
||||
How does Windows 95 stores LONG FILENAMES?
|
||||
|
||||
This file was worked out by Jozsef Hidasi
|
||||
Hidasi.Jozsef@MTTBBS.hu
|
||||
<EFBFBD>-- [ Contact Info > ] --------------------------------------------------------<2D>
|
||||
If you realize any mistakes, please contact me and let me know, to correct it!
|
||||
Thanks for everybody who helps to make this dox up to date!
|
||||
|
||||
Don's hesitate contact me!
|
||||
|
||||
Jozsef Hidasi
|
||||
E-Mail: Hidasi.Jozsef@MTTBBS.hu
|
||||
FIDO: 2:371/4.13 (At the moment this is my BBS :-) You can write to SysOp?!
|
||||
|
||||
<EFBFBD>-- [ WARNING! > ] ------------------------------------------------------------<2D>
|
||||
This text contains the most info I know at the moment! I'm not responsible for
|
||||
any DATA LOST!
|
||||
"???" Means I don't know what that field means...
|
||||
|
||||
<EFBFBD>-- [ What this doxument about? > ] -------------------------------------------<2D>
|
||||
This document contains some info how Windows'95 stores the long filenames.
|
||||
I don't know How long filenames can be handled by windows but as I calculated
|
||||
a file entry can be 832 bytes long. (See below)
|
||||
|
||||
Windows uses a simple methold to hide a file from DOS, it changes the "file"'s
|
||||
attribute to VolumeLabel. Basicly a disk can have only one VolumeLabel, and
|
||||
this attrib is not used any more as other files! In this way we can make
|
||||
difference between DOS File Rec. (I won't describe it now) and Windows Record.
|
||||
Eighter Dos File and Windows Record are 32 bytes long. (DOS file Record is the
|
||||
main file descriptor, date/time/attrib/etc...)
|
||||
|
||||
Windows Record>
|
||||
OFFSET Count Type Description Remark
|
||||
------------------------------------------------------------------
|
||||
0000h 1 byte Counter -
|
||||
0001h 10 char FileName E1 Entry 1
|
||||
000Bh 1 byte Attrib Always 0Fh
|
||||
000Ch 2 word ??? 0
|
||||
000Eh 12 char FileName E2 Entry 2
|
||||
001Ah 2 word ??? 0
|
||||
001Ch 4 char FileName E3 Entry 3
|
||||
|
||||
Counter:
|
||||
If attrib=0Fh and the counter>64 then Windows Entries will follow:
|
||||
Entry no.: Counter-'@'
|
||||
|
||||
Filename: The FileName is cut in 3 parts... Because of DOS compatibility...
|
||||
???: Reserved or don't know...
|
||||
|
||||
|
||||
Simple Example:
|
||||
Sector 19 ; Don't laught! This is a simple floppy :-)
|
||||
This is a simple DOS filenamed file>
|
||||
00000000: 53 49 4D 50 4C 45 20 20 - 44 4F 53 20 00 03 B8 9D SIMPLE DOS .
|
||||
00000010: 1F 25 1F 25 00 00 B9 9D - 1F 25 00 00 00 00 00 00 %%..<2E><>%......
|
||||
This is the first entry of the new Long filenamed file>
|
||||
(I've created this first and renamed by Windows)
|
||||
(This file is errased because of the filename's first byte is 0E5h)
|
||||
00000020: E5 49 4D 50 4C 45 20 20 - 57 49 4E 20 00 2A C6 9D <20>IMPLE WIN .*Ɲ
|
||||
00000030: 1F 25 1F 25 00 00 C7 9D - 1F 25 00 00 00 00 00 00 %%..ǝ%......
|
||||
|
||||
This is the first windows entry.
|
||||
The Filename's first byte (Counter) is C so 4 entryes will follow ...
|
||||
(One entry can hold 13 characters of the Long Filename...)
|
||||
This entry holds "m e d F i l e "=Filename E1+Filename E2+Filename E3
|
||||
(See bellow)
|
||||
This means that the first entry holds the last characters of the long
|
||||
filename...
|
||||
00000040: 43 6D 00 65 00 64 00 20 - 00 46 00 0F 00 44 69 00 Cm.e.d. .F..Di.
|
||||
00000050: 6C 00 65 00 00 00 FF FF - FF FF 00 00 FF FF FF FF l.e...<2E><><EFBFBD><EFBFBD>..<2E><><EFBFBD><EFBFBD>
|
||||
|
||||
Here is the next entry>
|
||||
Counter=2 means this is the 2nd entry of 3...
|
||||
Holds: " a L o n g F i l e n a"
|
||||
00000060: 02 20 00 61 00 20 00 4C - 00 6F 00 0F 00 44 6E 00 .a. .L.o..Dn.
|
||||
00000070: 64 00 46 00 69 00 6C 00 - 65 00 00 00 6E 00 61 00 g.F.i.l.e...n.a.
|
||||
|
||||
Here is the next entry>
|
||||
Counter=1 means this is the 1nd entry of 3...
|
||||
Holds: "S i m p l e . w i n i s "
|
||||
00000080: 01 53 00 69 00 6D 00 70 - 00 6C 00 0F 00 44 65 S.i.m.p.l..De.
|
||||
00000090: 2E 00 77 00 69 00 6E 00 - 20 00 00 00 69 00 73 00 ..w.i.n. ...i.s.
|
||||
|
||||
Here is the next entry>
|
||||
Counter="0" means this is the 1nd entry of 3...
|
||||
This entry holds the file's genereal info like date/time/attrib/length/etc...
|
||||
and DOS filename...
|
||||
000000A0: 53 49 4D 50 4C 45 7E 31 - 57 49 4E 20 00 2A C6 9D SIMPLE~1WIN .*Ɲ
|
||||
000000B0: 1F 25 1F 25 00 00 C7 9D - 1F 25 00 00 00 00 00 00 %%..ǝ%......
|
||||
--------------------------
|
||||
Summary>
|
||||
DOS Filename: simple~1.win
|
||||
Long Filename: Simple.win is a LongFilenamed file...
|
||||
|
||||
* A chracter ha a 0 after all characters, i don't know why!
|
||||
|
||||
The followings are empty:
|
||||
000000C0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
|
||||
000000D0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
|
||||
|
||||
Well, that's all i can write now, but it's quite hard to explain how does
|
||||
this work! Write me a letter instead... :-)
|
||||
|
||||
<EFBFBD>-- [ End of document > ] -----------------------------------------------------<2D>
|
||||
Best wishes,
|
||||
Hidi...
|
||||
Reference in New Issue
Block a user