private void InitiateCommon(string dosName, FileAccess access) { Debug.WriteLine("Initiating with " + dosName); DiskHandle = PlatformShim.CreateDeviceHandle(dosName, access); DosDeviceName = dosName; if (DiskHandle.IsInvalid) throw new ArgumentException("Invalid diskName: " + dosName); _access = access; _deviceIo = new DiskDeviceWrapper(DiskHandle); _diskFs = new FileStream(DiskHandle, _access); _diskInfo = _deviceIo.DiskGetDriveGeometry(); _deviceLength = _deviceIo.DiskGetLengthInfo(); }
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(); }