Beispiel #1
0
 public static extern SafeFileHandle CreateFile(
     string lpFileName,
     FileDesiredAccess dwDesiredAccess,
     FileShareFlags dwShareMode,
     IntPtr lpSecurityAttributes,
     FileCreationDisposition dwCreationDisposition,
     FileFlagsAndAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile
 );
Beispiel #2
0
 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);
Beispiel #4
0
 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);
 public static extern SafePipeHandle CreateFile(string fileName, FileDesiredAccess desiredAccess, FileShareMode shareMode, SECURITY_ATTRIBUTES securityAttributes, FileCreationDisposition creationDisposition, int flagsAndAttributes, IntPtr hTemplateFile);
Beispiel #7
0
 /// <inheritdoc />
 public ReOpenFileStatus TryReOpenFile(
     SafeFileHandle existing,
     FileDesiredAccess desiredAccess,
     FileShare shareMode,
     FileFlagsAndAttributes flagsAndAttributes,
     out SafeFileHandle reopenedHandle) => throw new NotImplementedException();
Beispiel #8
0
 public static extern SafeFileHandle CreateFile(string lpFileName, FileDesiredAccess dwDesiredAccess, FileShareMode dwShareMode, IntPtr lpSecurityAttributes, FileCreationDisposition dwCreationDisposition, FileFlagsAndAttributes dwFlagsAndAttributes, IntPtr hTemplateFile);
Beispiel #9
0
 public static extern SafeMailslotHandle CreateFile(string fileName,
                                                    FileDesiredAccess desiredAccess, FileShareMode shareMode,
                                                    IntPtr securityAttributes,
                                                    FileCreationDisposition creationDisposition,
                                                    int flagsAndAttributes, IntPtr hTemplateFile);
Beispiel #10
0
        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;
        }
Beispiel #11
0
        private static SafeFileHandle OpenReparsePoint(string reparsePoint, FileDesiredAccess accessMode)
        {
#if UNIX
            throw new PlatformNotSupportedException();
#else
            return WinOpenReparsePoint(reparsePoint, accessMode);
#endif
        }
Beispiel #12
0
        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);
            }
        }