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_VPB
    CSHORT 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结构,其他设备类型是没有的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
友善串口调试助手本身并不会导致乱码问题。乱码问题通常是由于波特率和VPB时钟频率不匹配导致的。当串口发送的字符串与接收端的波特率设置不一致时,会导致接收端无法正确解析接收到的数据,从而产生乱码。因此,在使用友善串口调试助手时,需要确保正确设置波特率和VPB时钟频率,以保证数据的正确传输。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [串口调试助手出现乱码](https://blog.csdn.net/yueniaoshi/article/details/7956160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [sscomassistant.2.15.0.Installer.x64.exe](https://download.csdn.net/download/qq_38998213/11248378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [友善串口调试助手基本功能怎么使用-友善串口调试助手使用教程](https://blog.csdn.net/weixin_36254564/article/details/113552739)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值