|
|
Guide >> Concepts >> Understanding FAT File System >> FAT32 features
FAT32 features
The following topics describe the FAT32 file system.
FAT Mirroring
On all FAT drives, there may be multiple copies of the FAT. If an error
occurs reading the primary copy, the file system will attempt to read from the
backup copies. On FAT16 and FAT12 drives, the first FAT is always the primary
copy and any modifications will automatically be written to all copies.
However,
on FAT32 drives, FAT mirroring can be disabled and a FAT other than the first
one can be the primary (or "active") copy of the FAT.
Mirroring is enabled by clearing bit 0x0080 in the extdpb_flags member
of a FAT32 Drive Parameter Block (DPB) structure, DPB.
| Mirroring |
Description |
When Enabled (bit 0x0080 clear) |
With mirroring enabled, whenever a FAT sector is written, it
will also be written to every other FAT. Also, a mirrored FAT sector can be
read
from any FAT.
A FAT32 drive with multiple FATs will behave the same as FAT16 and FAT12
drives with multiple FATs. That is, the multiple FATs are backups of each
other.
|
When Disabled (bit 0x0080 set) |
With mirroring disabled, only one of the FATs is active. The
active FAT is the one specified by bits 0 through 3 of the extdpb_flags
member of DPB. The other FATs are
ignored.
Disabling mirroring allows better handling of a drive with a bad sector in
one of the FATs. If a bad sector exists, access to the damaged FAT can be
completely disabled. Then, a new FAT can be built in one of the inactive FATs
and then made accessible by changing the active FAT value in
extdpb_flags. |
DPB (FAT32)
The DPB was extended to include FAT32 information. Changes are effective for
Windows 95 OEM Service Release 2 and later. DPB STRUC
dpb_drive DB ?
dpb_unit DB ?
dpb_sector_size DW ?
dpb_cluster_mask DB ?
dpb_cluster_shift DB ?
dpb_first_fat DW ?
dpb_fat_count DB ?
dpb_root_entries DW ?
dpb_first_sector DW ?
dpb_max_cluster DW ?
dpb_fat_size DW ?
dpb_dir_sector DW ?
dpb_reserved2 DD ?
dpb_media DB ?
ifdef NOTFAT32
dpb_first_access DB ?
else
dpb_reserved DB ?
endif
dpb_reserved3 DD ?
dpb_next_free DW ?
dpb_free_cnt DW ?
ifndef NOTFAT32
extdpb_free_cnt_hi DW ?
extdpb_flags DW ?
extdpb_FSInfoSec DW ?
extdpb_BkUpBootSec DW ?
extdpb_first_sector DD ?
extdpb_max_cluster DD ?
extdpb_fat_size DD ?
extdpb_root_clus DD ?
extdpb_next_free DD ?
endif
DPB ENDS
Members
- dpb_drive
- The drive number (0 = A, 1 = B, and so on).
- dpb_unit
- Specifies the unit number. The device driver uses the unit number to
distinguish the specified drive from the other drives it supports.
- dpb_sector_size
- The size of each sector, in bytes.
- dpb_cluster_mask
- The number of sectors per cluster minus 1.
- dpb_cluster_shift
- The number of sectors per cluster, expressed as a power of 2.
- dpb_first_fat
- The sector number of the first sector containing the file allocation table
(FAT).
- dpb_fat_count
- The number of FATs on the drive.
- dpb_root_entries
- The number of entries in the root directory.
- dpb_first_sector
- The sector number of the first sector in the first cluster.
- dpb_max_cluster
- The number of clusters on the drive plus 1. This member is undefined for
FAT32 drives.
- dpb_fat_size
- The number of sectors occupied by each FAT. The value of zero indicates a
FAT32 drive. Use the value in extdpb_fat_size instead.
- dpb_dir_sector
- The sector number of the first sector containing the root directory. This
member is undefined for FAT32 drives.
- dpb_reserved2
- Reserved member. Do not use.
- dpb_media
- Specifies the media descriptor for the medium in the specified drive.
- reserved
- Reserved member. Do not use.
- dpb_first_access
- Indicates whether the medium in the drive has been accessed. This member is
initialized to -1 to force a media check the first time this DPB is used.
- dpb_reserved3
- Reserved member. Do not use.
- dpb_next_free
- The cluster number of the most recently allocated cluster.
- dpb_free_cnt
- The number of free clusters on the medium. This member is 0FFFFh if the
number is unknown.
- extdpb_free_cnt_hi
- The high word of free count.
- extdpb_flags
- Flags describing the drive. The low 4 bits of this value contain the 0-based
FAT number of the Active FAT. This member can contain a combination of the
following values.
| Value |
Description |
BGBPB_F_ActiveFATMsk (000Fh) |
Mask for low four bits. |
BGBPB_F_NoFATMirror (0080h) |
Do not mirror active FAT to inactive FATs.
|
Bits 4-6 and 8-15 are reserved.
- extdpb_FSInfoSec
- The sector number of the file system information sector. This member is set
to 0FFFFh if there is no FSINFO sector. Otherwise, this value must be non-zero
and less than the reserved sector count.
- extdpb_BkUpBootSec
- The sector number of the backup boot sector. This member is set to 0FFFFh if
there is no backup boot sector. Otherwise, this value must be non-zero and less
than the reserved sector count.
- extdpb_first_sector
- The first sector of the first cluster.
- extdpb_max_cluster
- The number of clusters on the drive plus 1.
- extdpb_fat_size
- The number of sectors occupied by the FAT.
- extdpb_root_clus
- The cluster number of the first cluster in the root directory.
- extdpb_next_free
- The number of the cluster that was most recently allocated.
Back << Contents >> Next
|
|
|
Data Recovery Tools |
Active@ UNERASER -
a data recovery tool, designed to restore files and directories that have been accidentally deleted or lost.
|
Active@ Partition Recovery -
a partition undelete tool, designed to recover lost and deleted partitions.
|
Active@ Boot Disk -
a special bootable CD, designed to allow you to make a data backup, recover lost data, erase data, recover windows passwords.
|
Disk CleanUp Tools |
Active@ KillDisk -
a disk eraser software for secure formatting of hard drives without the possibility of data recovery.
|
Active@ ZDelete -
your privacy protection tool that prevents undesirable people accessing your privately deleted data.
|
|
|