【发布时间】:2018-11-21 05:56:31
【问题描述】:
// QueryChangesVirtualDisk
PCWSTR changeTrackingId = virtualDiskInfo->ChangeTrackingState.MostRecentId;
ULONG64 byteOffset = 0L;
ULONG64 byteLength = virtualDiskInfoSize;
PQUERY_CHANGES_VIRTUAL_DISK_RANGE pQueryChangeRange = NULL;
ULONG rangeCount = 0L;
ULONG64 processedLength = 0L;
openStatus = QueryChangesVirtualDisk(
vhdHandle, // A handle to the open VHD
changeTrackingId, // A pointer to a string that specifies the change tracking identifier
byteOffset, // Specifies the distance from the start of the VHD to the beginning of the area of the VHD
byteLength, // Specifies the length of the area of the VHD that you want to check for changes
QUERY_CHANGES_VIRTUAL_DISK_FLAG_NONE, // Reserved
pQueryChangeRange, // Indicates the areas of the virtual disk that have changed
&rangeCount, // The number of QUERY_CHANGES_VIRTUAL_DISK_RANGE structures that the array that the Ranges parameter points to can hold
&processedLength // Indicates the total number of bytes that the method processed
);
if (openStatus != ERROR_SUCCESS)
{
wprintf(L"Failed to call method(QueryChangesVirtualDisk), Erorr code: %ld\n", openStatus);
wprintf(L"Virtual disk path: %s\n", virtualDiskPath);
wprintf(L"%s\n", changeTrackingId);
wprintf(L"Start offset: %llu\n", byteOffset);
wprintf(L"End offset: %lu\n", virtualDiskInfoSize);
getchar();
return 1;
}
cout << "Succeeded to call method(QueryChangesVirtualDisk)." << endl;
if (vhdHandle != NULL)
{
CloseHandle(vhdHandle);
}
最近我们开始使用新的弹性变更跟踪 (RCT 2016) API。我们正面临 QueryChangesVirtualDisk API 的问题。我们按照 MSDN 中提到的步骤进行操作。如果它对他们有用,有人有什么建议吗?
【问题讨论】:
标签: c++ virtual-machine backup wmi access-denied