Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }