gpt4 book ai didi

c#-4.0 - 使用VDS创建UEFI分区

转载 作者:行者123 更新时间:2023-12-02 09:10:42 25 4
gpt4 key购买 nike

我正在尝试使用 IVdsCreatePartitionEx::CreatePartitionEx 创建 UEFI 分区方法。

CREATE_PARTITION_PARAMETERS我将 PARTITION_SYSTEM_GUID (c12a7328-f81f-11d2-ba4b-00a0c93ec93b) 作为 partitionTypeGPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER (0x8000000000000000) 作为属性传递。/p>

但是我得到一个类型为 c12a0000-f81f-11d2-ba4b-00a0c93ec93b 的未知分区。

Screenshot of DISKPART showing error.

你知道这里可能有什么问题吗?

我还尝试在 Win8 上使用 WMI 创建 UEFI 分区。但我收到错误值 41010 - 指定的分区类型无效。这是我的代码

static void Main(string[] args)
{
try
{
var scope = new ManagementScope(@"\\.\Root\Microsoft\Windows\Storage");
scope.Connect();

const string query = "SELECT * FROM MSFT_Disk WHERE Number = 7";
var objectQuery = new ObjectQuery(query);
var seacher = new ManagementObjectSearcher(scope, objectQuery);
var disks = seacher.Get();

var disk = disks.Cast<ManagementObject>().FirstOrDefault();

if (disk == null)
{
throw new NoNullAllowedException("Disk is null");
}

var parameters = disk.GetMethodParameters("CreatePartition");
FillInvocationParameters(parameters, new Dictionary<string, object> { { "Size", 104857600 }, { "Offset", 5ul * 1024 * 1024 * 1024 }, { "Alignment", 512 }, { "AssignDriveLetter", false }, { "GptType", "c12a7328-f81f-11d2-ba4b-00a0c93ec93b" }, { "IsHidden", false } });

var result = disk.InvokeMethod("CreatePartition", parameters, null);
var returnValue = result["ReturnValue"];
}
catch (Exception exception)
{
Debug.Fail(exception.Message);
}
}
static void FillInvocationParameters(ManagementBaseObject invokeParameters, IDictionary<string, object> parameters)
{
foreach (var pair in parameters)
{
string stringParamValue;

var managementObjectParam = pair.Value as ManagementObject;
var arrayParam = pair.Value as string[];

if (managementObjectParam != null)
{
stringParamValue = managementObjectParam.GetText(TextFormat.CimDtd20);
invokeParameters[pair.Key] = stringParamValue;
}
else if (arrayParam != null)
{
invokeParameters[pair.Key] = arrayParam;
}
else if (pair.Value != null)
{
stringParamValue = pair.Value.ToString();
invokeParameters[pair.Key] = stringParamValue;
}
}
}

最佳答案

我终于使用 VDS 解决了这个问题:我使用 IVdsPack::CreateVolume() 创建卷,收到它的分区,使用 IVdsAdvancedDisk::FormatPartition() 将其格式化为 Fat32 并使用 IVdsAdvancedDisk2::ChangePartitionType() 更改 PartitionType

关于c#-4.0 - 使用VDS创建UEFI分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com