Share via


IVdsVolume::Extend 메서드(vds.h)

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

각 플렉스의 각 멤버에 디스크 익스텐트 를 추가하여 현재 볼륨의 크기를 확장합니다.

구문

HRESULT Extend(
  [in]  VDS_INPUT_DISK *pInputDiskArray,
  [in]  LONG           lNumberOfDisks,
  [out] IVdsAsync      **ppAsync
);

매개 변수

[in] pInputDiskArray

VDS_INPUT_DISK 구조체의 배열에 대한 포인터입니다. 각 디스크에 대해 하나의 구조입니다.

참고 볼륨에 하나의 멤버만 있는 하나의 플렉스만 있는 경우 호출자는 Extend 메서드와 함께 기본 멤버 인덱스를 사용하면 안 됩니다.
 

[in] lNumberOfDisks

볼륨의 총 디스크 수입니다. 볼륨 플렉스에 볼륨을 확장할 수 있는 충분한 공간이 있는 경우 호출자는 0을 전달할 수 있습니다. pInputDiskArray는NULL이어야 합니다.

[out] ppAsync

반환 시 VDS가 초기화하는 IVdsAsync 인터페이스 포인터의 주소입니다. 호출자는 인터페이스를 해제해야 합니다. 이 포인터를 사용하여 작업 상태를 취소, 대기 또는 쿼리할 수 있습니다. 이 인터페이스에서 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_EXTEND
0x8004240EL
볼륨의 파일 시스템이 작업을 지원하지 않으므로 볼륨을 확장할 수 없습니다.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
볼륨을 확장할 공간이 부족합니다.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
볼륨이 정상이 아닙니다.

설명

이 메서드는 동일한 디스크에서 단순 볼륨을 확장하거나 볼륨을 여러 디스크로 확장하여 스팬 볼륨을 만듭니다. 호출자는 기본 디스크에서 볼륨을 확장할 수 있지만 디스크 익스텐트는 볼륨과 연속되어야 합니다.

VDS는 확장 볼륨 크기에 맞게 파일 시스템을 자동으로 확장합니다. 파일 시스템은 이 작업을 지원해야 합니다. 호출자가 사용할 익스텐트 지정에 실패하는 경우 VDS는 파일 시스템을 확장하지만 볼륨은 확장하지 않습니다.

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

VDS는 볼륨을 확장할 때 다음 규칙을 적용합니다.

  • 단순하고 스팬된 플렉스 유형의 경우 VDS는 익스텐트 범위가 동일한 디스크에 있는지 여부에 관계없이 다른 플렉스에 아직 기여하지 않는 디스크 익스텐트와 함께 플렉스의 유일한 멤버를 확장합니다. VDS는 호출자가 지정한 순서대로 디스크 익스텐트 를 사용하며 익스텐트 멤버 인덱스를 무시합니다. 기본 디스크가 아닌 한 VDS는 동일한 디스크 또는 다른 디스크의 디스크 익스텐트에서 플렉스의 유일한 멤버를 확장할 수 있습니다.
  • 패리티 플렉스 형식의 스트라이프 및 스트라이프의 경우 VDS는 다음과 같이 플렉스의 멤버에 익스텐트를 할당합니다.
    • 익스텐트 는 호출자가 지정한 멤버 인덱스로 이동합니다.
    • 호출자가 멤버 ID를 지정하지 못할 때 익스텐트 는 동일한 디스크를 차지하는 멤버 인덱스로 이동합니다.
    VDS는 동일한 디스크의 여러 멤버에 익스텐트를 할당하지 않습니다. 호출자는 모든 익스텐트 또는 없음에 대한 멤버를 지정해야 합니다. 호출자는 특정 범위의 멤버를 지정할 수 없으며 다른 범위에서는 지정할 수 없습니다.
호출자가 pInputDiskArray대해 NULL을, lNumberOfDisks에 대해 0을 전달하면 VDS는 비동기 개체에서 S_FALSE 반환하고 메서드에 대한 S_OK 반환합니다. 이 경우 S_OK VDS가 작업을 시작했지만 작업이 동기적임을 나타냅니다.

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

요구 사항

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

추가 정보

IVdsAsync

IVdsAsync::Wait

IVdsVolume

IVdsVolumeShrink::Shrink

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK