다음을 통해 공유


CreateVirtualDisk 함수(virtdisk.h)

기본 매개 변수를 사용하거나 기존 가상 디스크 또는 실제 디스크를 사용하여 VHD(가상 하드 디스크) 이미지 파일을 만듭니다.

구문

DWORD CreateVirtualDisk(
  [in]           PVIRTUAL_STORAGE_TYPE           VirtualStorageType,
  [in]           PCWSTR                          Path,
  [in]           VIRTUAL_DISK_ACCESS_MASK        VirtualDiskAccessMask,
  [in, optional] PSECURITY_DESCRIPTOR            SecurityDescriptor,
  [in]           CREATE_VIRTUAL_DISK_FLAG        Flags,
  [in]           ULONG                           ProviderSpecificFlags,
  [in]           PCREATE_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                    Overlapped,
  [out]          PHANDLE                         Handle
);

매개 변수

[in] VirtualStorageType

원하는 디스크 유형 및 공급업체 정보를 포함하는 VIRTUAL_STORAGE_TYPE 구조체에 대한 포인터입니다.

[in] Path

새 가상 디스크 이미지 파일의 경로를 나타내는 유효한 문자열에 대한 포인터입니다.

[in] VirtualDiskAccessMask

새로 만든 가상 디스크 파일을 열 때 사용할 VIRTUAL_DISK_ACCESS_MASK 값입니다. Parameters 매개 변수의 Version 멤버가 CREATE_VIRTUAL_DISK_VERSION_2 설정된 경우 VIRTUAL_DISK_ACCESS_NONE(0) 값만 지정할 수 있습니다.

[in, optional] SecurityDescriptor

가상 디스크 이미지 파일에 적용할 SECURITY_DESCRIPTOR 대한 선택적 포인터입니다. 이 매개 변수가 NULL이면 부모 디렉터리의 보안 설명자가 사용됩니다.

[in] Flags

생성 플래그는 CREATE_VIRTUAL_DISK_FLAG 열거형의 유효한 조합이어야 합니다.

[in] ProviderSpecificFlags

생성되는 가상 디스크 유형과 관련된 플래그입니다. 필요하지 않은 경우 0일 수 있습니다.

[in] Parameters

생성 매개 변수 데이터를 포함하는 유효한 CREATE_VIRTUAL_DISK_PARAMETERS 구조체에 대한 포인터입니다.

[in, optional] Overlapped

비동기 작업이 필요한 경우 유효한 OVERLAPPED 구조체에 대한 선택적 포인터입니다.

[out] Handle

새로 만든 가상 디스크를 나타내는 핸들 개체에 대한 포인터입니다.

반환 값

함수가 성공하면 반환 값이 ERROR_SUCCESSHandle 매개 변수에 새 가상 디스크 개체에 대한 유효한 포인터가 포함됩니다.

함수가 실패하면 반환 값은 오류 코드이고 Handle 매개 변수의 값은 정의되지 않습니다. 자세한 내용은 시스템 오류 코드를 참조하세요.

설명

CreateVirtualDisk 함수가 오류 코드 값 ERROR_INVALID_PARAMETER 실패하는 경우 원인은 다음 조건 중 때문일 수 있습니다.

  • VirtualStorageType 매개 변수는 NULL입니다.
  • Parameters 매개 변수는 NULL입니다.
  • Parameters 매개 변수의 Version 멤버가 CREATE_VIRTUAL_DISK_VERSION_1 또는 CREATE_VIRTUAL_DISK_VERSION_2 설정되지 않았습니다.
  • Parameters 매개 변수의 Version 멤버는 CREATE_VIRTUAL_DISK_VERSION_2 설정되지만 VirtualDiskAccessMask 매개 변수는 VIRTUAL_DISK_ACCESS_NONE 설정되지 않습니다.
  • Parameters 매개 변수의 BlockSizeInBytes 멤버가 CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE(0), 0x80000(512KB) 또는 0x200000(2MB)로 설정되지 않았습니다.
  • Parameters 매개 변수의 MaximumSize 멤버가 3MB 미만입니다.
  • Parameters 매개 변수의 MaximumSize 멤버가 SectorSizeInBytes 멤버의 값과 일치하지 않습니다.
  • VirtualDiskAccessMask 매개 변수는 값(VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL)으로 설정됩니다.
  • Flags 매개 변수가 CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION보다 큽 수 있습니다.
새 가상 디스크 이미지 파일이 포함된 호스트 볼륨을 압축하거나 EFS를 암호화할 수 없습니다.

다양한 유형의 가상 디스크를 만들 때 다음과 같은 생성 매개 변수 조합을 사용하는 것이 좋습니다.

  • CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION 플래그를 지정해야 합니다.
  • ParentPath 를 지정하면 안 됩니다.
  • 원하는 경우 SourcePath 를 지정할 수 있습니다.
  • CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION 플래그를 지정해서는 안 됩니다.
  • ParentPath 를 지정하면 안 됩니다.
  • 원하는 경우 SourcePath 를 지정할 수 있습니다.
  • CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION 플래그를 지정해서는 안 됩니다.
  • ParentPath 를 지정해야 합니다.
  • SourcePath 를 지정하면 안 됩니다.
CreateVirtualDisk 함수는 한 유형의 가상 디스크를 다른 가상 디스크로 변환하거나 실제 디스크를 가상 디스크로 변환하는 메커니즘으로 사용할 수도 있습니다. 이 작업은 CREATE_VIRTUAL_DISK_PARAMETERS 구조의 SourcePath 멤버를 사용하여 새 가상 디스크를 원본 디스크의 블록 데이터로 미리 채우는 방법을 통해 수행됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7
지원되는 최소 서버 Windows Server 2008 R2
대상 플랫폼 Windows
헤더 virtdisk.h
라이브러리 VirtDisk.lib
DLL VirtDisk.dll

추가 정보

VHD 정보

OpenVirtualDisk

VHD 참조