MSDN에 있는 What's New in the Windows API 보다가 VHD 관련한 API가 보여서 포팅해봤다.
VHD 관련 API는 Windows 7 이상에서만 동작한다.
서버는 2008 R2 이상부터
포팅한 헤더 이름은 VirtDisk.h
헤더의 SDK는 v7.0의 것을 이용했다.
MSDN의 예제 링크는 여기
MSDN에 관련 VHD 페이지는 VHD Reference를 참고하면 되겠다.
Example
아아아~ 귀차니즘으로 인한 콘솔보다 못한 UI라니 ㅠ.ㅜ
1. Create
예제에서는 C:\aaa.vhd의 경로에 파일을 생성한다.
현재 예제에서는 사이즈가 256mb로 지정되어 있다.
2. Attach & Detach
VHD를 시스템에 Attach시킨다.
딸깍하는 Windows 효과음이 나면서 처음이라면 가상드라이브 관련 드라이버도 설치가 진행된다.
누르고 자시고 할 것도 없이 그냥 진행된다 -_-;
탐색기에서는 변화가 없으니 제어판의 디스크 관리 항목을 열어보자.
디스크 1이라는 항목이 추가되어 있다.
디스크 1이라고 씌여진 부분에서 마우스 우클릭 후 디스크 초기화를 하면 온라인으로 상태가 변화된다.
256 MB가 씌여진 부분에서 우클릭 후 새 단순볼륨를 누르고 포맷을 진행하면 드라이브가 추가된다.
포맷이 완료되면 위 그림처럼 드라이브가 생성되고 파일을 읽고 쓸 수 있게 된다.
물론 탐색기에서 드라이브처럼 이용할 수 있다.
Detach하면 드라이브가 제거되며 다시 Attach하면 위에서 설정된 드라이브로 바로 마운트된다.
3. 기타 API
CompactVirtualDisk와 MergeVirtualDisk는 예제에서도 실행이 잘 안되서 확인을 못했고 나머지 api는 Attach 혹은 Detach 여부에 따라 동작이 가능했다.
PS
1. MINENUMSIZE 까먹어서 테스트 하다가 삽질 -_-;
http://docwiki.embarcadero.com/RADStudio/en/Delphi_Compiler_Directives_(List)_Index
컴파일러 지시자 링크
2. MSDN보니 Windows 8에서 API가 몇개(AddVirtualDiskParent 등) 추가됐다 -_-;;;
어..어이~ 마소~ Windows7도 얼른 지원해주라구.
'Programming > Delphi' 카테고리의 다른 글
[Delphi] ShowMessage, MessageDlg 버튼 캡션을 한글로 바꾸기 (0) | 2013.03.15 |
---|---|
[Delphi] varargs (0) | 2012.11.15 |
[Delphi] XE2에서 Zip으로 압축하고 압축풀기 (3) | 2012.08.14 |
[Win32 ShlObj] PathMakeUniqueName API로 유니크한 파일명 만들기 (3) | 2012.07.13 |
[Delphi] TExcelDocument Library - 엑셀없이 xls파일 만들기 (6) | 2011.12.22 |