如何使用 Delphi或 C#初始化和格式化虚拟磁盘?

问题描述

基于并使用 Jedi Demo VHD,我创建了一个虚拟磁盘,并且可以安装和卸载它。安装后,它在磁盘管理器中显示为磁盘 1“未知”。 继续在我的代码中对其进行初始化和格式化,我正在尝试使用以下代码

procedure TMainForm.BtnInitClick(Sender: TObject);
var RetBytes: DWORD;
  hDevice: Cardinal;
  Status: LongBool;
  Drive: string;
  CDsk  : TCreatedisk;
  PS    : TPartitionStyle;
begin
  hDevice := INVALID_HANDLE_VALUE;
  Drive   := GetdiskPath(Edit1.Text);
  hDevice:=CreateFile(PChar(Drive),FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,0);
  try
    memoinfo.Lines.Add('CreateFile Success. hDevice = '+hDevice.ToString);
    CDsk.PartitionStyle := PARTITION_STYLE_GPT;
    CDsk.Gpt.diskId := TGuid.Empty;
    CDsk.Gpt.MaxPartitionCount := 0;
    Status := DeviceIoControl(hDevice,IOCTL_disK_CREATE_disK,@CDsk,SizeOf(CDsk),@RetBytes,nil);
    try
      memoinfo.Lines.Add('DeviceControl Success');
    except
      on e: exception do memoinfo.Lines.Add('DeviceControl Error : '+e.Message);
    end;
  except
    on e: exception do memoinfo.Lines.Add('CreateFile Error : '+e.Message);
  end;
end;

当 edit1.text 包含我的虚拟磁盘的名称 (Testdisk.vhd) 并且 CreateFile 和 DeviceIoControl 都生成“成功”时,GetdiskPath 获取“\.\Physicaldisk1”,但磁盘管理器中的磁盘保持不变。

我做错了什么?

注意!如果您有基于 C# 的答案,那也可以。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)