C+;中的Windows VSS(卷影复制)+; 我需要一些帮助来帮助VSS在C++中工作。我的基本目标是扫描文件夹中已更改的文件(按修改日期),然后使用VSS将其备份到另一个设备。文件不清楚(至少对我来说)我如何做到这一点,我找不到任何像样的例子来说明如何做到这一点

C+;中的Windows VSS(卷影复制)+; 我需要一些帮助来帮助VSS在C++中工作。我的基本目标是扫描文件夹中已更改的文件(按修改日期),然后使用VSS将其备份到另一个设备。文件不清楚(至少对我来说)我如何做到这一点,我找不到任何像样的例子来说明如何做到这一点,c++,c,winapi,com,volume-shadow-service,C++,C,Winapi,Com,Volume Shadow Service,我的流程应该是这样的: 扫描文件夹并创建修改文件列表。 创建VSS快照并复制文件。 VSS快照被丢弃或释放(或其他) 以下是我到目前为止所做的工作(为了简洁起见,删除了错误处理): VSS\u SNAPSHOT\u PROP SNAPSHOT属性; ::协同初始化(空); ::CreateVssBackupComponents(&m_pBackupComponents); m_pBackupComponents->初始化备份(); m_pBackupComponents->StartSnapsh

我的流程应该是这样的:

扫描文件夹并创建修改文件列表。 创建VSS快照并复制文件。 VSS快照被丢弃或释放(或其他)

以下是我到目前为止所做的工作(为了简洁起见,删除了错误处理):

VSS\u SNAPSHOT\u PROP SNAPSHOT属性;
::协同初始化(空);
::CreateVssBackupComponents(&m_pBackupComponents);
m_pBackupComponents->初始化备份();
m_pBackupComponents->StartSnapshotSet(&m_SnapshotSetId);
m_pBackupComponents->AddToSnapshotSet(wszVolumePathName、GUID_NULL和snapshotId);
m_pBackupComponents->SetBackupState(真、假、VSS_BT_FULL、假);
m_pBackupComponents->PrepareForBackup(&pPrepareForBackupResults);
pPrepareForBackupResults->Wait();
m_pBackupComponents->DoSnapshotSet(&PDONapshotsetresults);

m_pBackupComponents->GetSnapshotProperties(snapshotId和snapshotProperties) VSS_SNAPSHOT_PROP实例通过调用GetSnapshotProperties()进行检索。您需要通过调用StartSnapshotSet()创建一个新集,然后在获取属性之前通过AddToSnapshotSet()将卷添加到快照集。

VSS\u snapshot\u PROP实例通过调用GetSnapshotProperties()检索。您需要通过调用StartSnapshotSet()创建一个新集,然后在获取属性之前通过AddToSnapshotSet()将卷添加到快照集。

在DoSnapshotset之后,您必须调用以下函数

hr=pDoSnapshotSetResults->Wait(); 如果(!successed(hr)){unLoadLibrary();返回1;}

    HRESULT hrDoSnapshotSetResults;

    hr = pDoSnapshotSetResults->QueryStatus(&hrDoSnapshotSetResults, NULL);
    if (!SUCCEEDED(hr)){    unLoadLibrary(); return 1;  }

一旦此函数成功,您就可以获取快照属性。

在DoSnapshotset之后,您必须调用以下函数

hr=pDoSnapshotSetResults->Wait(); 如果(!successed(hr)){unLoadLibrary();返回1;}

    HRESULT hrDoSnapshotSetResults;

    hr = pDoSnapshotSetResults->QueryStatus(&hrDoSnapshotSetResults, NULL);
    if (!SUCCEEDED(hr)){    unLoadLibrary(); return 1;  }

一旦此功能成功,您就可以获得快照属性。

谢谢您的建议。有趣的是,我确实试过了,但应用程序无法通过GetSnapshotProperties()调用,它只是停留在那里,线程无法通过该调用。我一定是做错了什么,所以我会进一步调查。我已经更新了问题,以显示我正在使用StartSnapshotSet()尝试的流程,它在最后一行停止。谢谢您的建议。有趣的是,我确实试过了,但应用程序无法通过GetSnapshotProperties()调用,它只是停留在那里,线程无法通过该调用。我一定是做错了什么,所以我会进一步调查。我已经更新了问题,以显示我正在使用StartSnapshotSet()尝试的流程,该流程在最后一行停止。你还在寻找答案吗?你还在寻找答案吗?