Beispiel #1
0
        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();
            }
        }
Beispiel #2
0
        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();
            }
        }