public static extern SafeFileHandle CreateFile( string lpFileName, FileDesiredAccess dwDesiredAccess, FileShareFlags dwShareMode, IntPtr lpSecurityAttributes, FileCreationDisposition dwCreationDisposition, FileFlagsAndAttributes dwFlagsAndAttributes, IntPtr hTemplateFile );
public static extern SafeMailslotHandle CreateFile(string fileName, FileDesiredAccess desiredAccess, FileShareMode shareMode, IntPtr securityAttributes, FileCreationDisposition creationDisposition, int flagsAndAttributes, IntPtr hTemplateFile);
public static extern IntPtr CreateFile( String lpFileName, // File name FileDesiredAccess dwDesiredAccess, // Access mode FileShareMode dwShareMode, // Share mode IntPtr fileSecurityAttributes, // Security Attributes FileCreationDisposition dwCreationDisposition,// How to create uint dwFlagsAndAttributes, // File attributes uint hTemplateFile);
internal static extern IntPtr CreateFile( string lpFileName, FileDesiredAccess dwDesiredAccess, FileShareMode dwShareMode, IntPtr lpSecurityAttributes, FileCreationDisposition dwCreationDisposition, FileAttributes dwFlagsAndAttributes, IntPtr hTemplateFile);
public static extern SafePipeHandle CreateFile(string fileName, FileDesiredAccess desiredAccess, FileShareMode shareMode, SECURITY_ATTRIBUTES securityAttributes, FileCreationDisposition creationDisposition, int flagsAndAttributes, IntPtr hTemplateFile);
/// <inheritdoc /> public ReOpenFileStatus TryReOpenFile( SafeFileHandle existing, FileDesiredAccess desiredAccess, FileShare shareMode, FileFlagsAndAttributes flagsAndAttributes, out SafeFileHandle reopenedHandle) => throw new NotImplementedException();
public static extern SafeFileHandle CreateFile(string lpFileName, FileDesiredAccess dwDesiredAccess, FileShareMode dwShareMode, IntPtr lpSecurityAttributes, FileCreationDisposition dwCreationDisposition, FileFlagsAndAttributes dwFlagsAndAttributes, IntPtr hTemplateFile);
private static SafeFileHandle WinOpenReparsePoint(string reparsePoint, FileDesiredAccess accessMode) { IntPtr nativeHandle = CreateFile(reparsePoint, accessMode, FileShareMode.Read | FileShareMode.Write | FileShareMode.Delete, IntPtr.Zero, FileCreationDisposition.OpenExisting, FileAttributes.BackupSemantics | FileAttributes.OpenReparsePoint, IntPtr.Zero); int lastError = Marshal.GetLastWin32Error(); if (lastError != 0) throw new Win32Exception(lastError); SafeFileHandle reparsePointHandle = new SafeFileHandle(nativeHandle, true); return reparsePointHandle; }
private static SafeFileHandle OpenReparsePoint(string reparsePoint, FileDesiredAccess accessMode) { #if UNIX throw new PlatformNotSupportedException(); #else return WinOpenReparsePoint(reparsePoint, accessMode); #endif }
private bool OpenDevice(DriverProductIds driverProduct) { try { //Check driver product type if (driverProduct == DriverProductIds.TTC_PRODUCTID_KEYBOARD) { HardwareTarget = "hid\\ttcvcontrkb"; } else if (driverProduct == DriverProductIds.TTC_PRODUCTID_MOUSEREL) { HardwareTarget = "hid\\ttcvcontrmsrel"; } else if (driverProduct == DriverProductIds.TTC_PRODUCTID_MOUSEABS) { HardwareTarget = "hid\\ttcvcontrmsabs"; } //Find the virtual device path IEnumerable <EnumerateInfo> SelectedHidDevice = EnumerateDevicesDi(GuidClassHidDevice, true); foreach (EnumerateInfo EnumDevice in SelectedHidDevice) { if (EnumDevice.HardwareId.ToLower() == HardwareTarget) { DevicePath = EnumDevice.DevicePath; break; } } FileShareMode shareModeExclusive = FileShareMode.FILE_SHARE_NONE; FileShareMode shareModeNormal = FileShareMode.FILE_SHARE_READ | FileShareMode.FILE_SHARE_WRITE; FileDesiredAccess desiredAccess = FileDesiredAccess.GENERIC_WRITE; FileCreationDisposition creationDisposition = FileCreationDisposition.OPEN_EXISTING; FileFlagsAndAttributes flagsAttributes = FileFlagsAndAttributes.FILE_FLAG_NORMAL | FileFlagsAndAttributes.FILE_FLAG_OVERLAPPED | FileFlagsAndAttributes.FILE_FLAG_NO_BUFFERING; //Try to open the device exclusively FileHandle = CreateFile(DevicePath, desiredAccess, shareModeExclusive, IntPtr.Zero, creationDisposition, flagsAttributes, IntPtr.Zero); Exclusive = true; //Try to open the device normally if (FileHandle == null || FileHandle.IsInvalid || FileHandle.IsClosed) { //Debug.WriteLine("Failed to open TetherScript device exclusively, opening normally."); FileHandle = CreateFile(DevicePath, desiredAccess, shareModeNormal, IntPtr.Zero, creationDisposition, flagsAttributes, IntPtr.Zero); Exclusive = false; } //Check if the device is opened if (FileHandle == null || FileHandle.IsInvalid || FileHandle.IsClosed) { //Debug.WriteLine("Failed to open TetherScript device: " + DevicePath); Connected = false; Installed = false; return(false); } else { //Debug.WriteLine("Opened TetherScript device: " + DevicePath + ", exclusively: " + Exclusive); Connected = true; Installed = true; return(true); } } catch (Exception ex) { Debug.WriteLine("Failed to open TetherScript device: " + ex.Message); Connected = false; Installed = false; return(false); } }