Share via


IVdsVolumeShrink::Shrink 메서드(vds.h)

[Windows 8 및 Windows Server 2012 가상 디스크 서비스 COM 인터페이스는 Windows Storage 관리 API로 대체됩니다.]

볼륨과 모든 플렉스를 축소하고 해제된 익스텐트 값을 반환합니다.

구문

HRESULT Shrink(
  [in]  ULONGLONG ullDesiredNumberOfReclaimableBytes,
  [in]  ULONGLONG ullMinNumberOfReclaimableBytes,
  [out] IVdsAsync **ppAsync
);

매개 변수

[in] ullDesiredNumberOfReclaimableBytes

볼륨 크기를 축소할 최대 바이트 수입니다. 이 매개 변수의 값은 ullMinNumberOfReclaimableBytes 매개 변수의 값보다 크거나 같아야 합니다. 지정된 바이트 수가 파일 시스템 클러스터 크기의 배수가 아닌 경우 Shrink 메서드는 이 값을 파일 시스템 클러스터 크기의 다음 배수로 반올림합니다.

[in] ullMinNumberOfReclaimableBytes

볼륨 크기를 축소할 최소 바이트 수입니다. 볼륨 크기를 이 바이트 수 이상으로 줄일 수 없으면 Shrink 메서드가 실패합니다. 지정된 바이트 수가 파일 시스템 클러스터 크기의 배수가 아닌 경우 Shrink 메서드는 이 값을 파일 시스템 클러스터 크기의 다음 배수로 반올림합니다. Shrink 메서드가 성공하려면 회수 가능한 최소 바이트 수가 필요하지 않음을 나타내려면 0을 지정합니다.

[out] ppAsync

IVdsAsync 인터페이스 포인터의 주소입니다. VDS는 반환 시 인터페이스를 초기화합니다. 호출자는 인터페이스를 해제해야 합니다. 이 인터페이스를 사용하여 작업의 상태 취소, 대기 또는 쿼리할 수 있습니다. IVdsAsync::Wait가 호출되고 성공 HRESULT 값이 반환되면 각 인터페이스 포인터에서 IUnknown::Release 메서드를 호출하여 VDS_ASYNC_OUTPUT 구조에서 반환된 인터페이스를 해제해야 합니다. 그러나 Wait가 실패 HRESULT 값을 반환하거나 WaitpHrResult 매개 변수가 오류 HRESULT 값을 수신하는 경우 VDS_ASYNC_OUTPUT 구조체의 인터페이스 포인터는 NULL이며 해제할 필요가 없습니다. Winerror.h에 정의된 SUCCEEDED 및 FAILED 매크로를 사용하여 성공 또는 실패 HRESULT 값을 테스트할 수 있습니다.

반환 값

이 메서드는 표준 HRESULT 값(예: E_INVALIDARG 또는 E_OUTOFMEMORY) 및 VDS 관련 반환 값을 반환할 수 있습니다. 또한 HRESULT_FROM_WIN32 매크로를 사용하여 변환된 시스템 오류 코드를 반환할 수도 있습니다. 오류는 VDS 자체 또는 사용 중인 기본 VDS 공급자 에서 발생할 수 있습니다. 가능한 반환 값은 다음과 같습니다.

반환 코드/값 Description
S_OK
메서드가 완료되었습니다.
VDS_E_CANNOT_SHRINK
0x8004251EL
파일 시스템에서 지원하지 않으므로 볼륨을 축소할 수 없습니다.
VDS_E_DISK_REMOVEABLE
0x8004255AL
이동식 미디어에서는 작업이 지원되지 않습니다.
VDS_E_INTERNAL_ERROR
0x80042448L
내부 오류가 발생했습니다. 자세한 내용은 이벤트 로그를 확인합니다.
VDS_S_NO_NOTIFICATION
0x00042517L
볼륨 도착 알림을 받지 못했습니다. IVdsService::Refresh를 호출해야 할 수 있습니다.
VDS_E_SHRINK_SIZE_TOO_BIG
0x80042574L
지정된 축소 크기가 너무 커서 볼륨이 최소 볼륨 크기보다 작게 됩니다.
VDS_E_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
지정된 축소 크기가 허용되는 최소 축소 크기보다 작습니다.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
볼륨이 정상이 아닙니다.
VDS_E_VOLUME_SIMPLE_SPANNED
0x80042589L
작업은 단순 볼륨 또는 스팬 볼륨에서만 지원됩니다.

설명

Shrink 메서드는 볼륨의 끝에 여유 공간을 통합하기 위해 파일을 볼륨의 시작 부분에 최대한 가깝게 이동합니다. (볼륨의 끝에서 통합할 수 있는 사용 가능한 공간의 양은 볼륨을 축소할 수 있는 양을 결정합니다.) 그런 다음 파일 시스템 볼륨을 잘라내어 크기를 줄인 다음 파티션 또는 동적 볼륨을 자립니다.

거의 모든 경우에 이동할 수 없는 일부 파일(즉, 이동할 수 없는 파일)이 있습니다. 예를 들어 파일 시스템 및 스토리지 드라이버 메타데이터 파일은 이동이 불가능할 수 있습니다. 이러한 이유로 볼륨을 축소할 수 있는 크기는 일반적으로 볼륨의 사용 가능한 총 공간 양보다 작습니다.

두 컴퓨터가 동일하게 구성된 경우에도 이동 불가능한 파일의 수와 배치는 컴퓨터마다 다를 수 있습니다.

파일을 일시적으로 변경할 수 있습니다. 이러한 이유로 애플리케이션이 동일한 매개 변수를 사용하여 이 메서드를 두 번째로 호출하는 경우 추가 공간을 복구할 수 있습니다.

ullDesiredNumberOfReclaimableBytesullMinNumberOfReclaimableBytes 매개 변수가 모두 0이면 Shrink 메서드는 볼륨을 최대한 줄입니다.

축소 및 확장 작업은 NTFS 및 RAW 볼륨에서만 지원됩니다.

이 메서드를 사용하여 파일 시스템 및 볼륨을 축소합니다. VDS가 볼륨을 축소하지 못하면 파일 시스템을 축소하지 않고 작업을 중지합니다.

각 볼륨에서 한 번에 하나의 축소 또는 조각 모음 작업만 수행할 수 있습니다. Windows Server 2008 및 Windows Vista: 컴퓨터에서 한 번에 하나의 축소 또는 조각 모음 작업만 수행할 수 있습니다.

호출이 비동기 작업을 시작하지 않더라도 구현자는 이 메서드에 대한 IVdsAsync 인터페이스에 대한 포인터를 반환해야 합니다.

이 메서드는 IVdsVolume::Shrink 메서드와 동일합니다.

IVdsVolumeShrink::QueryMaxReclaimableBytes 메서드를 사용하여 축소 작업으로 회수할 바이트 수를 예측할 수 있습니다. 그러나 QueryMaxReclaimableBytes 는 실제로 사용할 수 있는 것보다 더 많은 바이트를 반환할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 vds.h
라이브러리 Uuid.lib

추가 정보

IVdsVolume::Extend

IVdsVolumeShrink