Como criar uma partição sem o Windows atribuir uma letra de unidade?

Eu estou tentando inicializar e particionar um disco rígido virtual conectado por meio da API do Windows. Eu tenho sido bem sucedido usandoDeviceIoControl () para fazer isso, no entanto, sempre que eu aplico o layout de unidade desejado, o Windows está atribuindo automaticamente uma letra de unidade à partição e exibindo uma mensagem irritante "Deseja formatar?" diálogo.

Minha intenção é manipular a formatação e a montagem dessa partição posteriormente no programa, mas não sei como parar esse comportamento. Eu tentei definirRecognizedPartition para FALSE, mas isso parece não ter efeito.

Código relevante:

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

O que posso fazer para evitar a atribuição automática de letras de unidade?

questionAnswers(4)

yourAnswerToTheQuestion