WIN7虚拟服务器连接函数错误,错误:在WIN7中使用函数'CreateVirtualDisk'时访问被拒绝...

现在我正在尝试使用CreateVirtualDisk函数从物理磁盘和虚拟磁盘创建VHD。由于错误,我在这里陷入了一个星期:当我尝试从物理磁盘创建VHD时,访问被拒绝。我总是用管理员权限运行这个程序,所以理论上它应该解决问题,但是它没有。我真的不知道这里出了什么问题。错误:在WIN7中使用函数'CreateVirtualDisk'时访问被拒绝

你可以在这里找到VHD文件API:VHD

我用的PInvoke调用来自库“virtdisk.dll”这个方法,我这是怎么定义的函数:

[DllImport("virtdisk.dll", CharSet = CharSet.Unicode)]

public static extern Int32 CreateVirtualDisk(

ref VIRTUAL_STORAGE_TYPE VirtualStorageType,

String Path,

_VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask,

IntPtr SecurityDescriptor,

_CREATE_VIRTUAL_DISK_FLAG Flags,

Int32 ProviderSpecificFlags,

ref CREATE_VIRTUAL_DISK_PARAMETERS Parameters,

IntPtr Overlapped,

ref VirtualDiskSafeHandle Handle);

而且这是我收到的错误:

我这样设置的所有参数:

VIRTUAL_STORAGE_TYPE:

o virtualStorageType.DeviceID = VIRTUAL_STORAGE_TYPE_DEVICE_VHD;

o virtualStorageType.VendorID = VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT;

PATH: // name of the new VHD file

o m_path = “D:\VirtualDisk\test.vhd”;

VIRTUAL_DISK_ACCESS_MASK:

o virtualDiskAccessMask = VIRTUAL_DISK_ACCESS_MASK.VIRTUAL_DISK_ACCESS_CREATE;

SECURITY_DESCRIPTOR:

o securityDescriptor = IntPtr.Zero;

CREATE_VIRTUAL_DISK_FLAG:

o createVirtualDiskFlag = CREATE_VIRTUAL_DISK_FLAG.CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION

ProviderSpecificFlag:

o providerSpecificFlag = 0;

CREATE_VIRTUAL_DISK_PARAMETER:

o m_createVirtualDiskParameters.Version = _CREATE_VIRTUAL_DISK_VERSION.CREATE_VIRTUAL_DISK_VERSION_1;

o m_createVirtualDiskParameters.Version1.UniqueId = Guid.Empty;

o m_createVirtualDiskParameters.Version1.MaximumSize = 0;

o m_createVirtualDiskParameters.Version1.BlockSizeInBytes = 0;

o m_createVirtualDiskParameters.Version1.SectorSizeInByte = VirtualDisk.CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_SECTOR_SIZE;

o m_createVirtualDiskParameters.Version1.ParentPath = IntPtr.Zero;

o m_createVirtualDiskParameters.Version1.SourcePath = Marshal.StringToHGlobalAuto(sourcepath);

OVERLAPPED:

o Overlapped = IntPtr.Zero ;

HANDLE:

o handle

我已用字符串变量“源路径”的许多值,并且在这里试图是结果:

随着现有虚拟磁盘的绝对路径: 源路径= @“d:\ VirtualDisk \ KarhuBearOS.vhd “; 成功!

使用物理磁盘的绝对路径: sourcepath = @“C:\”; 失败! 访问被拒绝。

由VSS Service创建的卷ID: sourcepath = @“\?\ Volume {a3c3c244-8b7a-11de-a777-806e6f6e6963} \” 失败! 访问被拒绝。

由VSS服务创建的卷ID的绝对路径 sourcepath = @“\?\ GLOBALROOT \ Device \ HarddiskVolumeShadowCopy30 \” 失败! 访问被拒绝。

如果您能告诉我解决此问题的方法,我将非常感谢您的帮助。

我的最好的,

晃映阮

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值