Eklenmiş sanal sabit diski Windows API aracılığıyla başlatmaya ve bölümlemeye çalışıyorum. Bunu yapmak için DeviceIoControl()'u kullanarak başarılı oldum, ancak istenen sürücü düzenini her uyguladığımda Windows otomatik olarak bölüme bir sürücü harfi atar ve sinir bozucu bir haşhaş "Biçimlendirmek ister misiniz?" iletişim.Windows sürücü olmadan bir sürücü harfi atamak nasıl oluşturulur?
Amacım, bu bölümün biçimlendirmesini ve daha sonra programa takılmasını sağlamaktır, ancak bu davranışı nasıl durduracağımı bilmiyorum. FALSE için RecognizedPartition
ayarlamayı denedim, ancak bunun hiçbir etkisi yok gibi görünüyor.
İlgili kod:
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);
Ben otomatik sürücü harfi atamasını önlemek için ne yapabilirim?
Denemeye çalışmamaya gerek yok, çünkü özellikle denemek için boş disk yok. Bununla birlikte, sadece cihazı ('hDisk') açmayı denemeye ne dersiniz? Tüm ayrıcalıklı erişimden sonra, montaj yöneticisinin işinize karışmamasını sağlamalısınız, değil mi? (Bu dwShareMode == 0' olacaktır) soru için elbette +1. – 0xC0000022L
Kontrol ettim - maalesef çalışmıyor – Isso