public static SafeFileHandle GetVolumeHandle(string drive, bool readOnly = true) { var path = $"\\\\.\\{drive.TrimEnd('\\')}".ToUpperInvariant(); var handle = NativeInterop.CreateFile(path, (readOnly ? FileAccess.Read : FileAccess.ReadWrite), FileShare.ReadWrite, IntPtr.Zero, FileMode.Open, 0, IntPtr.Zero); if (handle.IsInvalid) { handle.Dispose(); return(null); } return(handle); }
public static SafeFileHandle GetDeviceHandle(ushort diskNumber, bool readOnly = true) { var path = $"\\\\.\\PhysicalDrive{diskNumber}"; var handle = NativeInterop.CreateFile(path, (readOnly ? FileAccess.Read : FileAccess.ReadWrite), FileShare.ReadWrite, IntPtr.Zero, FileMode.Open, 0, IntPtr.Zero); if (handle.IsInvalid) { handle.Dispose(); return(null); } return(handle); }