108 lines
4.4 KiB
Plaintext
108 lines
4.4 KiB
Plaintext
LONG FILENAMES
|
||
How does Windows 95 stores LONG FILENAMES?
|
||
|
||
This file was worked out by Jozsef Hidasi
|
||
Hidasi.Jozsef@MTTBBS.hu
|
||
®-- [ Contact Info > ] --------------------------------------------------------¯
|
||
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?!
|
||
|
||
®-- [ WARNING! > ] ------------------------------------------------------------¯
|
||
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...
|
||
|
||
®-- [ What this doxument about? > ] -------------------------------------------¯
|
||
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 %%..¹<>%......
|
||
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 å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...ÿÿÿÿ..ÿÿÿÿ
|
||
|
||
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... :-)
|
||
|
||
®-- [ End of document > ] -----------------------------------------------------¯
|
||
Best wishes,
|
||
Hidi...
|