Version 1.1 (2/9/1999)
The purpose of this lab is to acquaint the student with how a file system is implemented, using the intricacies of the FAT file system as an example.
Write a program that under the Windows NT operating system will directly access a floppy disk, and can display the disk directory tree (including subdirectories). The directory should include the disk volume name, and the name of each file or directory (in both long file name format and 8.3 format with trailing blanks removed), its size, date, and time of creation, and its attributes (read-only, hidden, system, etc.). The program will then prompt the user for a filename (pathname) on the floppy, and accept the typed name. The program will then prompt for a destination (not on the floppy), and copy the file (using direct drive access reads) to the destination disk. The program should work with any floppy type, and should adjust automatically to the different size data structures on different types of disks.
In this lab you will use the Microsoft Visual C++ 5.0 compiler, which is available on the solar domain. Two lab periods are allocated for this project. You can find an NT direct drive access example, and a description of the FAT data structures at these links.
The description of the FAT data structures are adapted from the book "PC Bible"
The NT direct drive access example is from the Microsoft System Journal.
A description of the VFAT (long file names), written by Jason Buttron, is available here.
Prepare a text file containing a brief report (one report per group) describing your design. Also detail any problems you encountered and any questions that remain about the lab material. Attach the report file and your program source file(s) and the executable (.exe) (in a ZIP or tar archive) to a mail message, and send it to your instructor. Do not discard your original files, in case anything gets lost in the email system. Each section of the source code should list the author(s) and reviewer(s) of the code segment; each portion must be reviewed by a team member other than the author(s).
The report is due before 3:00 PM on Friday of week 10.
This page was last updated on February 10, 1999; send comments to Mark Sebern.