Pointers

      SFT field sfi_hVPB contains the offset within the VPB segment of the associated VPB.

      MFT field mft_hVPB contains the offset within the VPB segment of the associated VPB.

      DPB field dpb_hVPB contains the offset within the VPB segment of the associated VPB.

      CDS field cdi_hVPB contains the offset within the VPB segment of the associated VPB.

      GDT_VPB locates the GDT descriptor for the VPB segment.

    Locations
      VPB segment is dynamically allocated from the kernel resident heap.
    VM Owner
      vpb (0xffa2).

    Format

    vpb

    ┌────────────────┬──────┬──────┬────┬────────────────────────────────────────┐│Field Name      │Offset│Length│Type│Description                             │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_flink       │0     │2     │W   │handle of forward link                  │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_blink       │2     │2     │W   │handle of back link                     │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_ref_count   │4     │2     │W   │count of objects that point to VPB      │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_search_count│6     │2     │W   │count of searches that point to VPB     │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_first_access│8     │1     │B   │initialized to -1 to force a media      │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_signature   │9     │2     │W   │Signature specifying VPB validity       │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_flags       │B     │1     │B   │flags (bits 7,6,3-0 defined below)      │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_fMisc       │C     │1     │B   │More flags (bit 7 defined below)        │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_FSC         │D     │4     │D   │Pointer to the file system control block│
    │                │      │      │    │(FSC).                                  │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_fsd         │11    │40    │S   │File system dependent section           │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpb_fsi         │51    │2C    │S   │File system independent section         │
    └────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
    

    vpb_signature values

    ┌───────────┬────────┬───────────┐
    │Name       │Bit Mask│Description│
    ├───────────┼────────┼───────────┤
    │VPB_VALID  │0x444A  │           │
    ├───────────┼────────┼───────────┤
    │VPB_INVALID│0x4A47  │           │
    └───────────┴────────┴───────────┘
    

    vpb_ID values

    ┌───────────────┬────────┬────────────────────────────────────────┐
    │Name           │Bit Mask│Description                             │
    ├───────────────┼────────┼────────────────────────────────────────┤
    │UNREAD_ID1     │0x4A52  │Media unreadable                        │
    ├───────────────┼────────┼────────────────────────────────────────┤
    │UNREAD_ID2     │0x534E  │Media unreadable                        │
    ├───────────────┼────────┼────────────────────────────────────────┤
    │DAMAGED_ID1    │0x0000  │Media damaged but recognised by IFS     │
    ├───────────────┼────────┼────────────────────────────────────────┤
    │DAMAGED_ID2    │0x0000  │Media damaged but recognised by IFS     │
    └───────────────┴────────┴────────────────────────────────────────┘
    

    vpb_falgs flag definitions

    ┌──────────────┬────────┬────────────────────────────────────────┐
    │Name          │Bit Mask│Description                             │
    ├──────────────┼────────┼────────────────────────────────────────┤
    │VPBCHECK      │0x01    │a volume ID check is going on for this  │
    │              │        │VPB                                     │
    ├──────────────┼────────┼────────────────────────────────────────┤
    │VPBNEWBOOT    │0x02    │new format disk                         │
    ├──────────────┼────────┼────────────────────────────────────────┤
    │VPBMOUNT      │0x04    │Mount in progress                       │
    ├──────────────┼────────┼────────────────────────────────────────┤
    │VPBFORMATMOUNT│0x08    │FormatMount done, not cleared           │
    ├──────────────┼────────┼────────────────────────────────────────┤
    │VPBINVALID    │0x10    │volume formatted - old vpb invalid      │
    ├──────────────┼────────┼────────────────────────────────────────┤
    │VPBINITCACHE  │0x20    │Initializing Cache Data                 │
    ├──────────────┼────────┼────────────────────────────────────────┤
    │VPBSETVID     │0x40    │vid set is in progress                  │
    ├──────────────┼────────┼────────────────────────────────────────┤
    │VPBALLOCATE   │0x80    │cluster allocation in progress          │
    └──────────────┴────────┴────────────────────────────────────────┘
    

    vpb_fMisc flag definitions

    ┌──────────────────────┬────────┬────────────────────────────────────────┐
    │Name                  │Bit Mask│Description                             │
    ├──────────────────────┼────────┼────────────────────────────────────────┤
    │VPB_FM_WRITEABLE      │0x01    │Set if we know volume can be written    │
    ├──────────────────────┼────────┼────────────────────────────────────────┤
    │VPB_FM_UNKNOWN        │0x02    │Set if no FATs and not claimed by FSD   │
    ├──────────────────────┼────────┼────────────────────────────────────────┤
    │VPB_REMOTE_DRIVE      │0x04    │set for attaches of remote drives       │
    ├──────────────────────┼────────┼────────────────────────────────────────┤
    │VPB_FM_ALLOCSHWAIT    │0x08    │Set if somebody wants alloc access so   │
    │                      │        │that they can get some disk clusters for│
    │                      │        │this volume                             │
    ├──────────────────────┼────────┼────────────────────────────────────────┤
    │VPB_FM_ALLOCEXWAIT    │0x10    │excl.access wait for somebody who wants │
    │                      │        │to release some clusters                │
    ├──────────────────────┼────────┼────────────────────────────────────────┤
    │VPB_FM_INITCACHE_ERROR│0x20    │Error initializing cache                │
    ├──────────────────────┼────────┼────────────────────────────────────────┤
    │VPB_FM_INITCACHE_DONE │0x40    │                                        │
    └──────────────────────┴────────┴────────────────────────────────────────┘
    

    vpbfsd

    ┌────────────┬──────┬──────┬────┬────────────┐
    │Field Name  │Offset│Length│Type│Description │
    ├────────────┼──────┼──────┼────┼────────────┤
    │vpd_work[64]│0     │40    │B   │            │
    ├────────────┼──────┼──────┼────┼────────────┤
    ├────────────┼──────┼──────┼────┼────────────┤
    │            │      │      │B   │            │
    └────────────┴──────┴──────┴────┴────────────┘
    

    vpbfsi

    ┌────────────┬──────┬──────┬────┬────────────────────────────────────────┐
    │Field Name  │Offset│Length│Type│Description                             │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_ID      │0     │4     │D   │32 bit unique ID of file (See           │
    │            │      │      │    │UNREAD_IDx, DAMAGED_IDx )               │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_pDPB    │4     │4     │D   │Drive volume is in                      │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_cbSector│8     │2     │W   │Size of physical sector in bytes        │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_totsec  │A     │4     │D   │Total number of sectors on medium       │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_trksec  │E     │2     │W   │Sectors per track on medium             │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_nhead   │10    │2     │W   │Number of heads in device               │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_text[12]│12    │C     │B   │                                        │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_pDCS    │1E    │4     │D   │device capability struc                 │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_pVCS    │22    │4     │D   │volume characteristic struc             │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_drive   │26    │1     │B   │drive (0=A)                             │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_unit    │27    │1     │B   │unit                                    │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpi_flags   │28    │2     │W   │flags for memory restrictions           │
    ├────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    └────────────┴──────┴──────┴────┴────────────────────────────────────────┘
    

    vpdFATFS

    ┌──────────────────────┬──────┬──────┬────┬────────────────────────────────────────┐
    │Field Name            │Offset│Length│Type│Description                             │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_cluster_mask   │0     │1     │B   │Sectors/cluster - 1                     │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_cluster_shift  │1     │1     │B   │Log2 of sectors/cluster                 │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_first_FAT      │2     │2     │W   │Starting record of FATs                 │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_FAT_count      │4     │1     │B   │Number of FATs for this drive           │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_root_entries   │5     │2     │W   │Number of directory entries             │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_first_sector   │7     │4     │D   │First sector of first cluster           │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_max_cluster    │B     │2     │W   │Number of clusters on drive + 1         │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_FAT_size       │D     │2     │W   │Number of records occupied by FAT       │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_dir_sector     │F     │4     │D   │Starting record of directory            │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_media          │13    │1     │B   │Media byte (duplicate of VPB)           │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_next_free      │14    │2     │W   │Cluster # of last allocated cluster     │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_free_cnt       │16    │2     │W   │Count of free clusters, -1 if unknown   │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_FATentrysize   │18    │1     │B   │12 or 16 - can you guess why ??? @@     │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_IDsector       │19    │4     │D   │sector number of ID                     │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_minEOF         │1D    │2     │W   │minimum EOF cluster value: 12-bit ->    │
    │                      │      │      │    │FF8, 16-bit -> FFF8                     │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_access         │1F    │2     │W   │whether rmdir XOR mov dir XOR (chdir    │
    │                      │      │      │    │mkdir OR mov file OR create)* has access│
    │                      │      │      │    │to volume                               │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_accwait        │21    │2     │W   │who's waiting for access                │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_alloc          │23    │2     │W   │whether disk cluster alloc OR release   │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_eaflags        │25    │2     │W   │flags for EA usage                      │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_eareaders      │27    │2     │W   │number of threads with pending reads    │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_eawaiters      │29    │2     │W   │number of threads waiting to run        │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_eahandles      │2B    │2     │W   │number of handles in EAOffTable         │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_pEASFT         │2D    │4     │D   │SFT for "EA DATA. SF"                   │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_pBadSector     │31    │4     │D   │Ptr for Bad sectors data                │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_pClusBitMap    │35    │4     │D   │Ptr to free cluster bit map             │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_pNextFreeBitMap│39    │4     │D   │Ptr to next free bit map position       │
    ├──────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │vpdFAT_cNextFreeBitMap│3D    │2     │W   │Count of dwords remaining in bit map    │
    └──────────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
    

    vpdFAT_eaflags flag definitiions

    ┌──────────────┬────────┬──────────────────────────────────┐
    │Name          │Bit Mask│Description                       │
    ├──────────────┼────────┼──────────────────────────────────┤
    │eavpb_fileopen│0x0001  │the EA file on this volume is open│
    ├──────────────┼────────┼──────────────────────────────────┤
    │eavpb_changing│0x0002  │the EA file is changing           │
    ├──────────────┼────────┼──────────────────────────────────┤
    │eavpb_dooropen│0x0004  │the drive door has been opened    │
    └──────────────┴────────┴──────────────────────────────────┘
    


    [Back] [Next]