欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

VPB结构

发布时间:2023/12/14 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 VPB结构 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

typedef struct _VPB { CSHORT Type; //IO_TYPE_VPBCSHORT Size; USHORT 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文件系统接管USHORT VolumeLabelLength; // 卷标长度(in bytes) struct _DEVICE_OBJECT *DeviceObject; // 未命名的文件系统逻辑卷对象(unnamed logical volume)struct _DEVICE_OBJECT *RealDevice; // 物理卷设备(如\Device\HarddiskVolume1)ULONG SerialNumber; // 卷序列号ULONG ReferenceCount; // VPB的引用计数,用以控制VPB的生命周期WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]; // 卷标,最长32个双字节 #define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR)) } VPB, *PVPB

VPB结构的创建

在IoCreateDevice创建设备时,如果设备类型是:
FILE_DEVICE_DISK (0x07)
FILE_DEVICE_TAPE (0x1f)
FILE_DEVICE_CD_ROM (0x02)
FILE_DEVICE_VIRTUAL_DISK (0x24)
那么就会创建一个VPB结构,其他设备类型是没有的.

总结

以上是生活随笔为你收集整理的VPB结构的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。