private static void ExampleDiskIO()
{
const string drive = @"\\.\PhysicalDrive0";
Console.WriteLine(@"## Exmaple on {0} ##", drive);
SafeFileHandle hddHandle = CreateFile(drive, FileAccess.ReadWrite, FileShare.ReadWrite, IntPtr.Zero, FileMode.Open, FileAttributes.Normal, IntPtr.Zero);
if (hddHandle.IsInvalid)
{
int lastError = Marshal.GetLastWin32Error();
Console.WriteLine(@"!! Invalid {0}; Error ({1}): {2}", drive, lastError, new Win32Exception(lastError).Message);
Console.WriteLine();
return;
}
using (DiskDeviceWrapper diskIo = new DiskDeviceWrapper(hddHandle, true))
{
DISK_GEOMETRY_EX info = diskIo.DiskGetDriveGeometryEx();
Console.WriteLine("Sector size: " + info.Geometry.BytesPerSector);
switch (info.PartitionInformation.PartitionStyle)
{
case PartitionStyle.PARTITION_STYLE_MBR:
Console.WriteLine("MBR Id: " + info.PartitionInformation.MbrSignature);
break;
case PartitionStyle.PARTITION_STYLE_GPT:
Console.WriteLine("GPT GUID: " + info.PartitionInformation.GptGuidId);
break;
}
PARTITION_INFORMATION_EX partitionInfo = diskIo.DiskGetPartitionInfoEx();
Console.WriteLine("Partition style: " + partitionInfo.PartitionStyle);
}
Console.WriteLine();
}