Querychangesvirtualdisk() возвращает access_denied (5)?
Недавно мы начали использовать новые API для отслеживания устойчивых изменений (RCT 2016). Мы столкнулись с проблемой с API QueryChangesVirtualDisk. Мы следуем шагам, упомянутым в MSDN. У кого-нибудь есть какие-нибудь предложения, если это работает на них?
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); }
Что я уже пробовал:
После моего теста дескриптор открытого виртуального диска изменяется с VIRTUAL_DISK_ACCEES_GET_INFO на VIRTUAL_DISK_ACCESS_ALL, это работа. Но вот новая проблема: виртуальная машина не может загрузиться или виртуальная машина включена, QueryChangesVirtualDisk() возвращает 32 (0x20)( файл находится в процессе работы).
Michael Haephrati
Об этой ошибке сообщили в корпорацию Майкрософт. Смотрите: https://social.msdn.microsoft.com/Forums/en-US/fe8f0860-d705-4d55-8d17-7891ab0ffea2/msft-api-querychangesvirtualdisk-retruns-accessdenied-error-0x5?forum=servervirtualization
[no name]
Большое спасибо!
[no name]
Но раньше я отвечал на этот вопрос на MSDN