資源簡介
利用Windows API 實現虛擬磁盤的創建,VHD function 實現實例.

代碼片段和文件信息
//?THIS?CODE?AND?INFORMATION?IS?PROVIDED?“AS?IS“?WITHOUT?WARRANTY?OF
//?ANY?KIND?EITHER?EXPRESSED?OR?IMPLIED?INCLUDING?BUT?NOT?LIMITED?TO
//?THE?IMPLIED?WARRANTIES?OF?MERCHANTABILITY?AND/OR?FITNESS?FOR?A
//?PARTICULAR?PURPOSE.
//
//?Copyright?(c)?Microsoft?Corporation.?All?rights?reserved
#include?
#include?
#include?
#include?
#include?
#include?“Storage.h“
//
//?This?sample?demonstrates?how?to?use?the?AddVirtualDiskParent?API?to?build?a?diff?chain?by?
//?explicitly?setting?the?parent?after?opening?the?child.
//
DWORD
SampleAddVirtualDiskParent(
????_In_????LPCWSTR?????VirtualDiskPath
????_In_????LPCWSTR?????ParentPath)
{
????OPEN_VIRTUAL_DISK_PARAMETERS?openParameters;
????VIRTUAL_STORAGE_TYPE?storageType;
????HANDLE?vhdHandle?=?INVALID_HANDLE_VALUE;
????DWORD?opStatus;
????//
????//?Specify?UNKNOWN?for?both?device?and?vendor?so?the?system?will?use?the
????//?file?extension?to?determine?the?correct?VHD?format.
????//
????
????storageType.DeviceId?=?VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN;
????storageType.VendorId?=?VIRTUAL_STORAGE_TYPE_VENDOR_UNKNOWN;
????
????//
????//?Open?the?VHD.
????//
????//?The?AddVirtualDiskParent?requires?a?V2?handle?open.?
????//
????//?The?child?must?be?opened?read-only?prior?to?calling?AddVirtualDiskParent.
????//
????//?VIRTUAL_DISK_ACCESS_NONE?is?the?only?acceptable?access?mask?for?V2?handle?opens.
????//?OPEN_VIRTUAL_DISK_FLAG_CUSTOM_DIFF_CHAIN?must?be?specified?when?calling?AddVirtualDiskParent.
????//
????memset(&openParameters?0?sizeof(openParameters));
????openParameters.Version?=?OPEN_VIRTUAL_DISK_VERSION_2;
????openParameters.Version2.ReadOnly?=?TRUE;
????opStatus?=?OpenVirtualDisk(
????????&storageType
????????VirtualDiskPath
????????VIRTUAL_DISK_ACCESS_NONE
????????OPEN_VIRTUAL_DISK_FLAG_CUSTOM_DIFF_CHAIN
????????&openParameters
????????&vhdHandle);
????
????if?(opStatus?!=?ERROR_SUCCESS)
????{
????????goto?Cleanup;
????}
????opStatus?=?AddVirtualDiskParent(vhdHandle?ParentPath);
????if?(opStatus?!=?ERROR_SUCCESS)
????{
????????goto?Cleanup;
????}????
Cleanup:
????if?(opStatus?==?ERROR_SUCCESS)
????{
????????wprintf(L“success\n“);
????}
????else
????{
????????wprintf(L“error?=?%u\n“?opStatus);
????}
????
????if?(vhdHandle?!=?INVALID_HANDLE_VALUE)
????{
????????CloseHandle(vhdHandle);
????}
????return?opStatus;
?}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2460??2013-06-18?05:21??AddVirtualDiskParent.cpp
?????文件????????4017??2013-06-18?05:21??AttachVirtualDisk.cpp
?????文件????????2927??2013-06-18?05:21??compactVirtualDisk.cpp
?????文件????????3872??2013-06-18?05:21??CreateVirtualDisk.cpp
?????文件????????2817??2013-06-18?05:21??DeleteUserme
?????文件????????2894??2013-06-18?05:21??DetachVirtualDisk.cpp
?????文件????????3589??2013-06-18?05:21??EnumerateUserme
?????文件????????3068??2013-06-18?05:21??GetAllAttachedVirtualDiskPhysicalPaths.cpp
?????文件????????4489??2013-06-18?05:21??GetStorageDependencyInformation.cpp
?????文件????????3632??2013-06-18?05:21??GetUserme
?????文件???????10491??2013-06-18?05:21??GetVirtualDiskInformation.cpp
?????文件????????3005??2013-06-18?05:21??MergeVirtualDisk.cpp
?????文件????????5461??2013-06-18?05:21??MirrorVirtualDisk.cpp
?????文件???????10215??2013-06-18?05:21??Program.cpp
?????文件????????6916??2013-06-18?05:21??RawIO.cpp
?????文件????????3059??2013-06-18?05:21??ResizeVirtualDisk.cpp
?????文件????????3289??2013-06-18?05:21??SetUserme
?????文件????????5869??2013-06-18?05:21??SetVirtualDiskInformation.cpp
?????文件????????2244??2013-06-18?05:21??Storage.h
?????文件?????????967??2013-08-01?11:17??Storage.sln
?????文件????????5650??2013-08-01?11:17??Storage.vcxproj
評論
共有 條評論