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보다 큽 수 있습니다.
다양한 유형의 가상 디스크를 만들 때 다음과 같은 생성 매개 변수 조합을 사용하는 것이 좋습니다.
- 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 를 지정하면 안 됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 |
지원되는 최소 서버 | Windows Server 2008 R2 |
대상 플랫폼 | Windows |
헤더 | virtdisk.h |
라이브러리 | VirtDisk.lib |
DLL | VirtDisk.dll |