Fsd - Representing Files in Memory
Essay by review • December 14, 2010 • Study Guide • 779 Words (4 Pages) • 1,135 Views
FSD- Representing Files In Memory
________________________________________
Representation of a file in memory
Physical Device Object (PDO)
- Represents media type objects, device type FILE_DEVICE_DISK,FILE_DEVICE_CDROM, FILE_DEVICE_VIRTUAL_DISK etc.
- Created by FSD by IoCreateDevice(..) to represent a physical or virtual disk obj, that it manages.
- At creation time, a VPB (more about this later) structure is allocated and associated with media type objects, by the I/O M.
- Initially VPB flags indicate tht physical media doesn't have any logical volumes mounted (VPB_MOUNTED)
- Later a mount operation might occur.
Logical Volume Device Object (LVDO)
- Represents instance of a mounted logical volume.
- Created by a FSD implementaion.
- As part of mounting the LV, most OS require certain system defined data structs be created and/or initialised to establish linkage b/w the rest of the I/O M structs and in-mem representaion of mounted vol.
- In NT, the I/O M requires that a Device Object representing the mounted LV be created for physical media be created and initialized. For network redirectors, not required.
- Each VDO is logically associated with a PDO using a VPB struct belonging to the PDO. Occurs at mount time, when the very first Create/Open request is received by the I/O M for an object residing on the PDO.
Volume Parameter Block (VPB)
- Creates Logical association b/w PDO & LVDO
- Only exists for Dev Objs that represent physical or virtual media, that can be mounted.
- There is no physical association b/w the PDO & LDO representing a mounted vol, as would typically happen in an attach operation, this is typically done for filters to intercept the requests to the target dev obj.
- Has information abour volume Serial number, Volume Label and Volume label length
- IN a mount op. the only connection b/w PDO and LVDO is VPB
- I/O M is aware of this logical association & always checks the VPB on receipt of a Create/Open call for an on-disk obj. to determine the FS vol dev obj in which the req should actually be directed.
- Each File Obj (FO) struct represents a successful open Op. on an on-disk obj, points to the VPB struct belonging to the PDO on which the opened on-disk obj resides.
- The Flags fields in the VPB has one of the three values
1. VPB_MOUNTED - Set by I/O M after successful mount op.
2. VPB_LOCKED - Set by FSD. IF set all Open/Create ops will fail of that LV. FASTFAT code in IFS kit does it, in response to FSCTL_LOCK_VOL
3. VPB_PERSISTENT - If set, I/O M will not del VPB even if ReferenceCount = 0
Volume Control BLock (VCB)
- Created as part of Mount op.
- Contains ptr to the root dir in-mem struct, that is the FCB for the root-dir,
...
...