MergeVirtualDisk 함수(virtdisk.h)
차이점 체인의 자식 VHD(가상 하드 디스크)를 체인에 있는 하나 이상의 부모 가상 디스크와 병합합니다.
구문
DWORD MergeVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] MERGE_VIRTUAL_DISK_FLAG Flags,
[in] PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
[in, optional] LPOVERLAPPED Overlapped
);
매개 변수
[in] VirtualDiskHandle
VIRTUAL_DISK_ACCESS_METAOPS 플래그를 사용하여 열어야 하는 열려 있는 가상 디스크에 대한 핸들입니다. 가상 디스크를 여는 방법에 대한 자세한 내용은 OpenVirtualDisk 함수를 참조하세요.
[in] Flags
MERGE_VIRTUAL_DISK_FLAG 열거형의 MERGE_VIRTUAL_DISK_FLAG_NONE 값이어야 합니다.
[in] Parameters
병합 매개 변수 데이터를 포함하는 유효한 MERGE_VIRTUAL_DISK_PARAMETERS 구조체에 대한 포인터입니다.
[in, optional] Overlapped
비동기 작업이 필요한 경우 유효한 OVERLAPPED 구조체에 대한 선택적 포인터입니다.
반환 값
요청의 상태입니다.
함수가 성공하면 반환 값이 ERROR_SUCCESS.
함수가 실패하면 반환 값은 오류 코드입니다. 자세한 내용은 시스템 오류 코드를 참조하세요.
설명
디스크를 병합하려면 작업 중에 영향을 받는 디스크를 분리해야 합니다.
호출자에게 READ| 가 있어야 합니다.영향을 받는 디스크에 대한 백업 저장소에 대한 쓰기 액세스 권한입니다.
디스크의 RWDepth는 OPEN_VIRTUAL_DISK_PARAMETERS 지정한 병합 깊이보다 커야 합니다.
병합은 병합되는 부모 디스크를 수정하므로 해당 부모에 종속된 다른 차이점 보관 디스크는 더 이상 유효하지 않습니다.
병합되는 부모 디스크는 병합이 수행되는 자식 차이점 보관 디스크에 보관된 것과 동일한 데이터를 나타내도록 변경됩니다.
병합되는 부모 디스크의 모든 기존 데이터를 덮어씁니다.
병합 작업이 중단되면 자식 디스크를 계속 사용할 수 있습니다. MergeVirtualDisk 함수를 다시 실행하여 병합을 완료할 수 있습니다.
병합 요청의 깊이는 병합할 차이점 체인의 부모 VHD 이미지 파일 수입니다. 예를 들어 MergeDepth 멤버의 값이 1이면 지정된 차이점 보관 디스크의 데이터 블록이 부모로 이동됩니다. MergeDepth 멤버의 값이 2이고 지정된 차이점 보관 디스크의 부모도 차이점 관리 디스크인 경우(체인에 세 번째 디스크가 있음) 첫 번째 디스크와 두 번째 디스크의 데이터 블록이 세 번째 디스크로 이동됩니다(마지막 작업 중에 첫 번째 디스크의 블록이 두 번째 디스크의 블록보다 우선 적용됨).
완료되면 영향을 받는 자식 디스크는 더 이상 유효한 것으로 간주되지 않으며 향후 해당 디스크에 대한 작업은 지원되지 않는 결과를 갖게 됩니다. 이전 예제에서 병합이 성공적으로 완료되면 세 번째 디스크가 유효하고 첫 번째 및 두 번째 디스크는 유효하지 않습니다. MergeVirtualDisk 함수는 유효하지 않은 디스크를 삭제하거나 자동 차이점 관리 관계 다시 연결을 수행하지 않습니다. 이 작업은 호출자가 명시적으로 수행해야 합니다.
병합 작업이 차이점 보관용 디스크의 비리프 노드에서 수행되는 경우 병합되는 디스크의 자식 노드에 대한 부모 정보를 수정하는 것은 호출자의 책임입니다.
요구 사항
지원되는 최소 클라이언트 | Windows 7 |
지원되는 최소 서버 | Windows Server 2008 R2 |
대상 플랫폼 | Windows |
헤더 | virtdisk.h |
라이브러리 | VirtDisk.lib |
DLL | VirtDisk.dll |