42 lines
1.4 KiB
Plaintext
42 lines
1.4 KiB
Plaintext
From: noesis@ucscb.UCSC.EDU (Kyle Anthony York)
|
|
Newsgroups: comp.os.msdos.programmer
|
|
Subject: Re: Win95 FAT long file name storage?
|
|
|
|
ok, here goes:
|
|
|
|
long file names are stored as follows, i've been using direct sector
|
|
access, so i don't know if findfirst(..) findnext(..) will work.
|
|
|
|
the long names are stored as unicode strings in the immediatly preceding
|
|
entries. the entry attribute byte is 0x0f.
|
|
|
|
the long name format is also used whenever a filename has lower case
|
|
characters, thus preserving case and backwards compatability.
|
|
|
|
so...if the name is ``abcdefghijklmnop'' and this is the first entry of a
|
|
subdirectory:
|
|
entry[0] = "."
|
|
entry[1] = ".."
|
|
entry[2] = "ijklmnop", attribute = 0x0f
|
|
entry[3] = "abcdefgh", attribute = 0x0f
|
|
entry[4] = "ABCDEF~1", attribute = normal
|
|
|
|
in addition to having the attribute 0x0f, the entry format is:
|
|
BYTE 0 --- bit 7 = 1 if deleted, 0 if not
|
|
6 = 1 if last block of extended entry, 0 if not
|
|
5..0 = extended entry # (1..31)
|
|
BYTE 1..10 --- first 5 characters in unicode ("abcde" becomes
|
|
"a", 0, "b", 0, "c", 0, "d", 0, "e", 0
|
|
BYTE 11 --- attribute (0x0f)
|
|
BYTE 12 --- ?? unknown ??
|
|
BYTE 13 --- ?? unknown ??
|
|
BYTE 14..25 -- next 6 characters (in unicode)
|
|
BYTE 26..27 --- 0x0000 (first cluster #)
|
|
BYTE 28..31 --- last 4 characters (in unicode)
|
|
|
|
unused bytes are set to 0xff
|
|
end of string is denoted by 0x00, 0x00
|
|
|
|
best o' luck
|
|
--kyle
|