zoukankan      html  css  js  c++  java
  • VBP结构介绍

    VPB是Windows I/O Manager子系统的一个重要的数据结构,全称为 Volume Parameter Block。它的任务是绑定卷设备(如磁盘分区或虚拟磁盘)和接管此卷设备的文件系统(如FastFat,NTFS)。Windows系统上的挂载点(Mount Point,如盘符C:)只能定位至卷设备(如\Device\HarddiskVolume1),Windows Object Manager(对象管理器)在解析路径名时(即Name Parsing过程)还要通过卷设备的VPB信息进一步定位至接管此卷设备的文件系统驱动上。

    图一

    VPB结构说明:

    定义于WDK头文件inc\ddk\wdm.h中

    typedef struct _VPB {
    CSHORT Type;
    CSHORT Size;
    USHORT Flags;
    USHORT VolumeLabelLength; // in bytes
    struct _DEVICE_OBJECT *DeviceObject;
    struct _DEVICE_OBJECT *RealDevice;
    ULONG SerialNumber;
    ULONG ReferenceCount;
    WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
    } VPB, *PVPB

    成员说明

    Type: 魔数标志 IO_TYPE_VPB

    Size: sizeof(VPB)
    Flags: 标志位,相关标志描述如下:
    VPB_MOUNTED (1<<0): 此卷已被文件系统识别并已挂载
    VPB_LOCKED (1<<1): 此卷已被文件系统锁定,锁定操作由请求FSCTL_LOCK_VOLUME完成
    VPB_PERSISTENT (1<<2): 将VPB一直保留在内存中(不释放),即使此VPB引用计数为0
    VPB_REMOVE_PENDING (1<<3): 表示此存储设备即将被卸载/删除。此标志由Pnp Manager(即插
    即用管理器)管理和使用。此标志在可在处理Pnp请求
    IRP_MN_CANCEL_REMOVE_DEVICE时清除
    VPB_RAW_MOUNT (1<<4): 指定此卷仅由系统RAW文件系统接管

    VolumeLabelLength: 卷标长度(in bytes)

    DeviceObject: 未命名的文件系统逻辑卷对象(unnamed logical volume)文件系统的卷设备

    RealDevice: 物理卷设备(如\Device\HarddiskVolume1)

    SerialNumber: 卷序列号

    ReferenceCount: VPB的引用计数,用以控制VPB的生命周期

    VolumeLabel: 卷标,最长32个双字节,比如BACKUP
    #define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR))

  • 相关阅读:
    前端资源分享
    解决COM组件80070005错误
    【迁移】—Entity Framework实例详解 转
    IIS错误处理集合
    疯狂蚂蚁框架搭建
    MSSQL日期格式化
    一句SQL实现获取自增列操作
    mongodb 性能篇
    mongodb管理篇
    mongodb高级应用
  • 原文地址:https://www.cnblogs.com/magicdmer/p/4458373.html
Copyright © 2011-2022 走看看