Winapi 如何创建可写的VSS快照?

Winapi 如何创建可写的VSS快照?,winapi,volume-shadow-service,Winapi,Volume Shadow Service,这意味着您可以创建可写的vss快照: 但是你怎么做呢?我已经尝试过了,通过删除卷上的只读标志,我可以使FAT/FAT32分区VSS快照可写,但对于NTFS,它会报告错误\u写入\u保护如果要将卷影副本转换为读/写LUN,则需要额外的操作 with选项可以使卷影拷贝LUN作为一个读写卷向主机公开 有关示例,请参考官方示例:。使用-bw命令将卷影集拆分为可写的卷。将硬件LUN(以及相关的BreakSnapshotSetEx)放在一边,有两种可能的方法可以通过纯软件的方式获得可写快照。第一个是编写自定

这意味着您可以创建可写的vss快照:

但是你怎么做呢?我已经尝试过了,通过删除卷上的只读标志,我可以使FAT/FAT32分区VSS快照可写,但对于NTFS,它会报告
错误\u写入\u保护

如果要将卷影副本转换为读/写LUN,则需要额外的操作

with选项可以使卷影拷贝LUN作为一个读写卷向主机公开


有关示例,请参考官方示例:。使用
-bw
命令将卷影集拆分为可写的卷。

将硬件LUN(以及相关的BreakSnapshotSetEx)放在一边,有两种可能的方法可以通过纯软件的方式获得可写快照。第一个是编写自定义VSS编写器并公开OnPostSnapshot事件处理程序。这是在vss创建快照后,快照首先变为可写的,以便所有相关的写入程序都可以在快照设备上执行特定的回滚更正。第二种方法是编写一个块设备驱动程序,该驱动程序在只读持久快照设备上分层一个可写差异映像。。非常类似于差异化虚拟磁盘的工作方式。

您能分享一下您所做的工作吗?与步骤类似,在Windows服务器或客户端上使用工具或winapi?如果您可以提供一个可通过IVssBackupComponents作为VSS请求程序写入的示例,这将非常有用。InitializeForBackup、SetContext、SetBackupState、GatherWriterMetadata(处理组件)、StartSnapshotSet、AddToSnapshotSet、PrepareForBackup、DoSnapshotSet。从vsobjprop.Obj.Snap.m_pwszSnapshotDeviceObject获取卷,将该句柄用于Win32函数。或者我需要添加/执行什么步骤才能使其可写(除了从卷中删除只读属性,这已经在FAT/FAT32中实现了,并且对FAT/FAT32有效)。这就是我的想法,但当我在FAT32分区上测试时,它很棒!我可以简单地删除只读卷标志并修改快照(如果我再次打开卷上的只读位,则这些修改将丢失,但保持关闭状态仍然有效)。对于团队如何支持NTFS有什么想法吗?