Notes

advertisement
FAT32 Directory Entries and
Operations Guide
Operating Systems
CS3430
Sarah Diesburg
1
Outline

Directory entries


Short-name and long-name entries
Project 3 operations
2
Directory Entries
3
Directory Entries


Lists names of files and directories in a
directory
Types


Short-name directory entry
Long-name directory entry
4
Short-name Directory Entry




Limits name size to 8 bytes with additional 3
bytes after “.”
Compatible with previous FAT versions
32 bytes total size
Holds important information about file or dir:

Attributes, timestamp, last access date, first
cluster number, size
5
Short-name Directory Entry


If DIR_Name[0] == 0xE5, then the directory
entry is free (no file or directory name in this
entry)
If DIR_Name[0] == 0x00, then the directory
entry is free (same as for 0xE5), and there
are no allocated directory entries after this
one
6
Long-name Directory Entry


Backwards-compatible way to allow longer
names to be displayed
Each long-name directory entry is 32 bytes


A long file name can cover a set of long-name
directory entries
Each set of long-name directory entries must
correspond to a short-name directory entry

Long-name entries must immediately precede
corresponding short-name entry
7
Long-name Directory Entry
Long-name part 1
Long-name part 2
Two long-name
entries are needed to
hold the file name
Short-name
8
Long-name Directory Entry
Long-name part 1
Long-name part 2
Short-name
Short name entry for
the file must exist too
9
Long-name Directory Entry
Long-name part 1
Long-name part 2
Long-name entries
for this file
immediately precede
short-name entry
Short-name
10
Directory entries

Long-name entry for “fatgen103.pdf"
11
Directory entries

Short-name entry for “fatgen103.pdf"
12
Long-name Directory Entries

You can ignore the long directory entries


Can just display the short names
This makes the project easier
13
“Dot” Entries




All directories (except root directory of entire
system) have “.” and “..” directory entries
“.” means “this directory”
“..” means “the parent directory”
Why do you think the root directory does not
have these entries?
14
Directory Entry Attributes

Offset 11 in directory entry, 1 byte long







ATTR_READ_ONLY 0x01
ATTR_HIDDEN 0x02
ATTR_SYSTEM 0x04
ATTR_VOLUME_ID 0x08
ATTR_DIRECTORY 0x10
ATTR_ARCHIVE 0x20
ATTR_LONG_NAME

ATTR_READ_ONLY | ATTR_HIDDEN |
ATTR_SYSTEM | ATTR_VOLUME_ID
15
Utility Operations
16
FAT32 Utility Oprations
Utility recognizes the following built-in commands:





info
open
close
size
cd


ls
read
17
Precautions



File or directory must exist before performing
operations on it
File must be open and flagged for reading
before you attempt to read from it
Be sure you are reading from the right
location

Off by 1 byte can throw whole project off
18
Handling Open Files


An open file is a file we allow I/O operations
to be performed on read
To handle open files, we must maintain a
table of files that are open
Opening Files
/] open FATINFO.TXT rw

If “FATINFO.TXT” is found in the current
directory, open “FATINFO.TXT”


In order to find fatinfo.txt, you must be able to
interpret the current directory and determine
whether fatinfo.txt is part of that directory
Once you open fatinfo.txt, store its name in
the open file table
open
1.
2.
3.
Check if the file is already open
Check that the provided file name exists in
the requested directory
If it exists, add the file to your open file table
close
1.
2.
Check that the file name provided exists in
your open file table
If it does, remove that entry from your open
file table
Closing Files
/] close FATINFO.TXT

Remove this file’s entry from the open file
table
23
ls
1.
2.
3.
4.
Make sure that provided directory name is
directory and exists in requested directory
Seek first data cluster
Iterate through and print each directory entry
in the cluster
If more directory entries left than first cluster
can hold, seek next cluster and repeat 3
size
Check that provided file name exists in the
requested directory
1.

Can be accomplished by seeking through the
clusters of the requested directory
If it does, extract the size information
2.

Pay attention to endianness!
cd
Check that provided directory name is a
directory and exists
Alter your current working directory to reflect
the change
1.
2.

For ease of debugging and use, you may want to
alter your prompt to show current working
directory
I/O on Open Files
/] read “fatinfo.txt” 0 100


Only allow the read if fatinfo.txt is open
In order to read fatinfo.txt, you must look
into the open file table, look up the address
of fatinfo.txt (or store it with its name), and
read enough of the data clusters to satisfy
the read request
read
1.
2.
3.
4.
5.
Make sure file name provided is in open-file
table and flagged as read-capable
Check that the provided position is valid
Check that the requested number of bytes is
valid
Seek to data cluster corresponding to the
requested start position and begin reading
If more data to be read, seek the next
clusters and repeat 4
Use Cases

Be sure to look at the Project 3 Use Cases
document and make sure you code acts the
same way.
29
Download