Ejemplo n.º 1
0
 private static extern IntPtr CreateFile(
     [In] String lpFileName,
     WinAPI.FILE_ACCESS_FLAGS dwDesiredAccess,
     WinAPI.FILE_SHARE dwShareMode,
     IntPtr lpSecurityAttributes,
     WinAPI.CreateDisposition dwCreationDisposition,
     UInt32 dwFlagsAndAttributes,
     IntPtr hTemplateFile);
Ejemplo n.º 2
0
        /// <summary>Create instance of device info class by device ID or drive letter</summary>
        /// <param name="deviceId">ID of device</param>
        /// <param name="deviceName">name of device</param>
        /// <param name="accessFlags">Device desired access flags</param>
        /// <param name="shareMode">Opened device share mode</param>
        /// <exception cref="ArgumentException">Device id does not specified</exception>
        public DeviceIoControl(Byte?deviceId, String deviceName, WinAPI.FILE_ACCESS_FLAGS accessFlags, WinAPI.FILE_SHARE shareMode)
        {        //DriveInfo.GetDrives()
            this._deviceId = deviceId;

            if (deviceId.HasValue)
            {
                this._deviceName = DeviceIoControl.GetDeviceName(deviceId.Value);
            }
            else if (!String.IsNullOrEmpty(deviceName))
            {
                Char deviceLetter = Array.Find(deviceName.ToCharArray(), delegate(Char ch) { return(Char.IsLetter(ch)); });
                this._deviceName = String.Format(Constant.DriveWinNTArg1, deviceLetter);
            }
            else
            {
                throw new ArgumentException("Device id does not specified");
            }

            this._deviceHandle = Methods.OpenDevice(this.Name, accessFlags, shareMode);
        }
Ejemplo n.º 3
0
        /// <summary>Opens specified device</summary>
        /// <param name="lpFileName">Device path</param>
        /// <param name="dwDesiredAccess">Desired access flage</param>
        /// <param name="dwShareMode">Share mode</param>
        /// <exception cref="ArgumentNullException">lpFileName is null or empty</exception>
        /// <exception cref="Win32Exception">Device does not opened</exception>
        /// <returns>Handle to the opened device</returns>
        public static IntPtr OpenDevice(String lpFileName, WinAPI.FILE_ACCESS_FLAGS dwDesiredAccess, WinAPI.FILE_SHARE dwShareMode)
        {
            if (String.IsNullOrEmpty(lpFileName))
            {
                throw new ArgumentNullException("lpFileName");
            }

            IntPtr result = Methods.CreateFile(lpFileName,
                                               dwDesiredAccess,
                                               dwShareMode,
                                               IntPtr.Zero,
                                               WinAPI.CreateDisposition.OPEN_EXISTING,
                                               0,
                                               IntPtr.Zero);

            if (result == Constant.INVALID_HANDLE_VALUE)
            {
                throw new Win32Exception();
            }
            return(result);
        }