public static void CreateSinglePartitionMbr(SafeFileHandle device, MbrPartitionInfo partitionInfo) { var uniqueSignature = (uint)new Random().Next(); if (!IoctlCreateMbrDisk(device, uniqueSignature)) { throw new Win32Exception(); } if (!IoctlDiskUpdateProperties(device)) { throw new Win32Exception(); } if (!IoctlSetMbrDriveLayout( handle: device, uniqueSignature: uniqueSignature, startingOffset: partitionInfo.StartingOffset, partitionLength: partitionInfo.PartitionLength, partitionType: (byte)partitionInfo.PartitionType, bootable: partitionInfo.Bootable, hiddenSectors: partitionInfo.HiddenSectorSize)) { throw new Win32Exception(); } if (!IoctlDiskUpdateProperties(device)) { throw new Win32Exception(); } }
public static void CreateSinglePartitionGpt(SafeFileHandle device, MbrPartitionInfo partitionInfo) { var diskId = Guid.NewGuid(); if (!IoctlCreateGptDisk(device, diskId, maxPartitionCount: 0)) { throw new Win32Exception(); } if (!IoctlDiskUpdateProperties(device)) { throw new Win32Exception(); } }