Jak utworzyć partycję bez przypisywania litery systemu Windows?

Próbuję zainicjować i podzielić podłączony wirtualny dysk twardy za pomocą interfejsu API systemu Windows. Udało mi się użyćDeviceIoControl () aby to zrobić, jednak za każdym razem, gdy zastosuję żądany układ dysku, Windows automatycznie przypisuje literę dysku do partycji i pojawia się denerwujące „Czy chcesz sformatować?” dialog.

Moim zamiarem jest obsługa formatowania i montowania tej partycji w dalszej części programu, ale nie wiem, jak zatrzymać to zachowanie. Próbowałem ustawieniaRecognizedPartition na FAŁSZ, ale wydaje się, że nie ma to żadnego skutku.

Odpowiedni kod:

<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>

Co mogę zrobić, aby zapobiec automatycznemu przypisywaniu liter dysku?

questionAnswers(4)

yourAnswerToTheQuestion