Как создать раздел без Windows, назначив букву диска?

Я пытаюсь инициализировать и разделить подключенный виртуальный жесткий диск через Windows API. Я успешно использовалDeviceIoControl () для этого, однако, всякий раз, когда я применяю желаемую разметку диска, Windows автоматически назначает букву диска разделу и выдает раздражающее сообщение & quot; Хотите отформатировать? & quot; Диалог.

Мое намерение состоит в том, чтобы обработать форматирование и монтирование этого раздела позже в программе, но я не уверен, как остановить это поведение. Я пробовал настройкуRecognizedPartition ЛОЖЬ, но это, кажется, не имеет никакого эффекта.

Соответствующий код:

<code>Layout.PartitionStyle = PARTITION_STYLE_MBR;
Layout.PartitionCount = 4;
Layout.Mbr.Signature = MY_DISK_MBR_SIGNATURE;
Layout.PartitionEntry[0].PartitionStyle = PARTITION_STYLE_MBR;
Layout.PartitionEntry[0].PartitionNumber = 1;
Layout.PartitionEntry[0].StartingOffset.QuadPart = MY_DISK_OFFSET;
Layout.PartitionEntry[0].PartitionLength.QuadPart =
   (Geom.DiskSize.QuadPart - MY_DISK_OFFSET);
Layout.PartitionEntry[0].Mbr.PartitionType = PARTITION_IFS;
Layout.PartitionEntry[0].Mbr.BootIndicator = FALSE;
Layout.PartitionEntry[0].Mbr.RecognizedPartition = FALSE;
Layout.PartitionEntry[0].Mbr.HiddenSectors =
   (MY_DISK_OFFSET / Geom.Geometry.BytesPerSector);

for (int i = 0; i < 4; i++)
{
    Layout.PartitionEntry[i].RewritePartition = TRUE;
}

if (!DeviceIoControl(hDisk, IOCTL_DISK_SET_DRIVE_LAYOUT_EX,
                     Layout, dwLayoutSz, NULL, 0, &dwReturn, NULL))
{
    // Handle error
}
DeviceIoControl(hDisk, IOCTL_DISK_UPDATE_PROPERTIES,
                NULL, 0, NULL, 0, &dwReturn, NULL);
</code>

Что я могу сделать, чтобы предотвратить автоматическое назначение букв дисков?

Ответы на вопрос(4)

Ваш ответ на вопрос