The Microsoft Windows 98 operating system supports the FAT32 file system first introduced in Windows 95 OSR 2. FAT32 allocates disk space much more efficiently than previous versions of the FAT file system. This results in tens and even hundreds of megabytes more free disk space on larger hard drives. When used with the updated Disk Defragmenter tool in Windows 98, FAT32 can significantly improve application load time.
Because the end-user benefits of disk space and improved performance are so great, Windows 98 will convert hard drives to FAT32 during Tune-Up, which is run manually from Welcome when the user chooses the Custom option in Tune-Up and selects "Optimize Hard Drive." This conversion, however, might impact the hibernate, or suspend-to-disk, features shipped with many systems. To support Windows 98 flawlessly, systems that implement hibernate through the APM BIOS or through the Advanced Configuration and Power Interface (ACPI) S4/BIOS state must support FAT32.
| Strategies for Supporting FAT32 and Hibernate | |
| Testing Hibernate with FAT32 | |
| Action Items for Developers |
The simplest strategy for supporting FAT32 is to create a dedicated hibernate partition with an ID of 84H as recommended in Appendix E of the APM BIOS specification. This strategy avoids the FAT32 issue entirely, because the hibernation image is not stored on a FAT file system. The disadvantage is that you must dedicate enough disk space to handle all the memory a user might install in a computer.
Another strategy is to store the hibernate file on the FAT file system. Systems that use this strategy must automatically handle conversions from FAT16 to FAT32. At boot, the BIOS must check the partition type. FAT32 file systems use partition types 0Bh and 0Ch. If the BIOS detects one of these partition types, the BIOS or the hibernate utility must rebuild the hibernation file. BIOSs that directly create the hibernation file must be updated with FAT32 support.
Documentation on the disk structure of the FAT32 file system is available from the web site at http://support.microsoft.com/default.aspx?scid=KB;en-us;q154997. If a separate utility creates the hibernation file, then that utility should use Int 21 calls for file I/O. Documentation on new FAT32 Int 21 calls is available through MSDN Professional subscription.
Testing Hibernate with FAT32 is easy. Follow these steps:
1. | Start Windows 98. |
2. | From the Programs/Accessories/System Tools folder on the Start menu, run the FAT 32 Converter, and then follow the steps presented by the wizard. |
3. | After conversion is complete, choose Start/Shutdown/Standby to hibernate the computer. |
4. | Verify that the system correctly resumes from hibernate. |
5. | Run ScanDisk to verify that the file system is still intact. |
The following scenarios should be tested:
| • | Start the computer in its shipping configuration with FAT16, convert to FAT32, and test as indicated above. |
| • | On a computer that is already running FAT32 and hibernate, add the maximum amount of memory, and verify hibernate. |
| • | If your BIOS uses a hibernate partition, boot the computer with the partition removed or reformatted (simulating users who upgrade their hard disk), and verify that the system gracefully handles the lack of hibernate partition and informs the user of what to do. If Windows shows a Start/Shutdown/Standby option, test it and make sure that the computer suspends to RAM instead of to disk. |
| • | Whether you are implementing hibernate or S4/BIOS through APM or ACPI, your BIOS must support the FAT32 file system and automatically handle conversion from FAT16 to FAT32. |
| • | Verify that hibernate works on both FAT16 and FAT32 drives. |