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?