From 6bed360a7435375b384d0c73bcc15f1d04f81333 Mon Sep 17 00:00:00 2001 From: Tomas Date: Sat, 26 Feb 2022 15:16:10 +0000 Subject: [PATCH] Removed SCP dependency --- MiController.sln | 10 +- MiController/ControllerHelper.cs | 181 ------ MiController/DriverSetup.cs | 58 -- MiController/DriverUtils/Devcon.cs | 242 ------- MiController/DriverUtils/Difx.cs | 192 ------ MiController/HidLibrary/HidDevice.cs | 148 +++-- MiController/HidLibrary/HidDeviceData.cs | 8 +- MiController/HidLibrary/HidDevices.cs | 24 +- .../HidLibrary/HidFastReadEnumerator.cs | 44 ++ MiController/HidLibrary/HidReport.cs | 2 +- MiController/HidLibrary/IHidDevice.cs | 4 +- MiController/HidLibrary/NativeMethods.cs | 593 +++++++++--------- MiController/MiApplicationContext .cs | 136 ++-- MiController/MiController.csproj | 49 +- MiController/NoHighlightRenderer.cs | 15 + MiController/Program.cs | 18 +- MiController/Properties/AssemblyInfo.cs | 7 +- MiController/Properties/Resources.Designer.cs | 2 +- MiController/Properties/Settings.Designer.cs | 22 +- MiController/ScpDriver/ScpVBus.cat | Bin 12385 -> 0 bytes MiController/ScpDriver/ScpVBus.inf | 71 --- MiController/ScpDriver/amd64/DIFxAPI.dll | Bin 519048 -> 0 bytes MiController/ScpDriver/amd64/ScpVBus.sys | Bin 39168 -> 0 bytes MiController/ScpDriver/x86/DIFxAPI.dll | Bin 323464 -> 0 bytes MiController/ScpDriver/x86/ScpVBus.sys | Bin 33024 -> 0 bytes MiController/ScpDriverInterface/ScpBus.cs | 312 --------- .../ScpDriverInterface/X360Controller.cs | 157 ----- MiController/Setup.iss | 5 +- MiController/Win32/DeviceEventArgs.cs | 19 + .../Win32/DeviceInfoEqualityComparer.cs | 11 + MiController/Win32/HidHide.cs | 219 +++++++ MiController/Win32/HidMonitor.cs | 74 +++ MiController/Win32/Native/Kernel32.cs | 31 + MiController/Win32/VolumeHelper.cs | 162 +++++ MiController/Win32/WideStringHelper.cs | 69 ++ MiController/XInputManager.cs | 132 ++++ MiController/XiaomiGamepad.cs | 453 ++++++++----- MiController/app.config | 6 + MiController/packages.config | 4 + 39 files changed, 1570 insertions(+), 1910 deletions(-) delete mode 100644 MiController/ControllerHelper.cs delete mode 100644 MiController/DriverSetup.cs delete mode 100644 MiController/DriverUtils/Devcon.cs delete mode 100644 MiController/DriverUtils/Difx.cs create mode 100644 MiController/HidLibrary/HidFastReadEnumerator.cs create mode 100644 MiController/NoHighlightRenderer.cs delete mode 100644 MiController/ScpDriver/ScpVBus.cat delete mode 100644 MiController/ScpDriver/ScpVBus.inf delete mode 100644 MiController/ScpDriver/amd64/DIFxAPI.dll delete mode 100644 MiController/ScpDriver/amd64/ScpVBus.sys delete mode 100644 MiController/ScpDriver/x86/DIFxAPI.dll delete mode 100644 MiController/ScpDriver/x86/ScpVBus.sys delete mode 100644 MiController/ScpDriverInterface/ScpBus.cs delete mode 100644 MiController/ScpDriverInterface/X360Controller.cs create mode 100644 MiController/Win32/DeviceEventArgs.cs create mode 100644 MiController/Win32/DeviceInfoEqualityComparer.cs create mode 100644 MiController/Win32/HidHide.cs create mode 100644 MiController/Win32/HidMonitor.cs create mode 100644 MiController/Win32/Native/Kernel32.cs create mode 100644 MiController/Win32/VolumeHelper.cs create mode 100644 MiController/Win32/WideStringHelper.cs create mode 100644 MiController/XInputManager.cs create mode 100644 MiController/app.config create mode 100644 MiController/packages.config diff --git a/MiController.sln b/MiController.sln index 3e7278f..9b4ffa2 100644 --- a/MiController.sln +++ b/MiController.sln @@ -1,18 +1,24 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30503.244 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32112.339 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiController", "MiController\MiController.csproj", "{AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}.Debug|Any CPU.Build.0 = Debug|Any CPU {AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}.Debug|x64.ActiveCfg = Debug|Any CPU {AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}.Debug|x64.Build.0 = Debug|Any CPU + {AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}.Release|Any CPU.Build.0 = Release|Any CPU {AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}.Release|x64.ActiveCfg = Release|Any CPU {AA86CCD2-39BC-4CEC-8E9C-29E3AB9E1C24}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection diff --git a/MiController/ControllerHelper.cs b/MiController/ControllerHelper.cs deleted file mode 100644 index ed388ff..0000000 --- a/MiController/ControllerHelper.cs +++ /dev/null @@ -1,181 +0,0 @@ -using System; -using System.ComponentModel; -using System.Linq; -using HidLibrary; -using ScpDriverInterface; -using System.Threading; -using System.Runtime.InteropServices; - -namespace MiController -{ - public class ControllerHelper - { - private static ScpBus _globalScpBus; - static bool ConsoleEventCallback(int eventType) - { - if (eventType == 2) - { - _globalScpBus.UnplugAll(); - } - return false; - } - static ConsoleEventDelegate _handler; // Keeps it from getting garbage collected - // Pinvoke - private delegate bool ConsoleEventDelegate(int eventType); - [DllImport("kernel32.dll", SetLastError = true)] - private static extern bool SetConsoleCtrlHandler(ConsoleEventDelegate callback, bool add); - - - public static void Run(BackgroundWorker bw) - { - ScpBus scpBus = new ScpBus(); - scpBus.UnplugAll(); - _globalScpBus = scpBus; - - _handler = ConsoleEventCallback; - SetConsoleCtrlHandler(_handler, true); - - Thread.Sleep(400); - - XiaomiGamepad[] gamepads = new XiaomiGamepad[4]; - int index = 1; - var compatibleDevices = HidDevices.Enumerate(0x2717, 0x3144).ToList(); - foreach (var deviceInstance in compatibleDevices) - { - Console.WriteLine(deviceInstance); - HidDevice device = deviceInstance; - try - { - device.OpenDevice(DeviceMode.Overlapped, DeviceMode.Overlapped, ShareMode.ShareRead | ShareMode.ShareWrite); - } - catch - { - bw.ReportProgress(0, "Could not open gamepad in exclusive mode. Try re-enable device."); - var instanceId = DevicePathToInstanceId(deviceInstance.DevicePath); - if (TryReEnableDevice(instanceId)) - { - try - { - device.OpenDevice(DeviceMode.Overlapped, DeviceMode.Overlapped, ShareMode.Exclusive); - bw.ReportProgress(0, "Opened in exclusive mode."); - } - catch - { - device.OpenDevice(DeviceMode.Overlapped, DeviceMode.Overlapped, ShareMode.ShareRead | ShareMode.ShareWrite); - bw.ReportProgress(0, "Opened in shared mode."); - } - } - else - { - device.OpenDevice(DeviceMode.Overlapped, DeviceMode.Overlapped, ShareMode.ShareRead | ShareMode.ShareWrite); - bw.ReportProgress(0, "Opened in shared mode."); - } - } - - byte[] vibration = { 0x20, 0x00, 0x00 }; - if (device.WriteFeatureData(vibration) == false) - { - bw.ReportProgress(0, "Could not write to gamepad (is it closed?), skipping"); - device.CloseDevice(); - continue; - } - - device.ReadSerialNumber(out _); - device.ReadProduct(out _); - - - gamepads[index - 1] = new XiaomiGamepad(device, scpBus, index); - ++index; - - if (index >= 5) - { - break; - } - } - bw.ReportProgress(0, $"{index - 1} controllers connected"); - - while (!bw.CancellationPending) - { - Thread.Sleep(1000); - } - } - - private static bool TryReEnableDevice(string deviceInstanceId) - { - try - { - bool success; - Guid hidGuid = new Guid(); - HidLibrary.NativeMethods.HidD_GetHidGuid(ref hidGuid); - IntPtr deviceInfoSet = HidLibrary.NativeMethods.SetupDiGetClassDevs(ref hidGuid, deviceInstanceId, 0, HidLibrary.NativeMethods.DIGCF_PRESENT | HidLibrary.NativeMethods.DIGCF_DEVICEINTERFACE); - HidLibrary.NativeMethods.SP_DEVINFO_DATA deviceInfoData = new HidLibrary.NativeMethods.SP_DEVINFO_DATA(); - deviceInfoData.cbSize = Marshal.SizeOf(deviceInfoData); - success = HidLibrary.NativeMethods.SetupDiEnumDeviceInfo(deviceInfoSet, 0, ref deviceInfoData); - if (!success) - { - Console.WriteLine("Error getting device info data, error code = " + Marshal.GetLastWin32Error()); - } - success = HidLibrary.NativeMethods.SetupDiEnumDeviceInfo(deviceInfoSet, 1, ref deviceInfoData); // Checks that we have a unique device - if (success) - { - Console.WriteLine("Can't find unique device"); - } - - HidLibrary.NativeMethods.SP_PROPCHANGE_PARAMS propChangeParams = new HidLibrary.NativeMethods.SP_PROPCHANGE_PARAMS(); - propChangeParams.classInstallHeader.cbSize = Marshal.SizeOf(propChangeParams.classInstallHeader); - propChangeParams.classInstallHeader.installFunction = HidLibrary.NativeMethods.DIF_PROPERTYCHANGE; - propChangeParams.stateChange = HidLibrary.NativeMethods.DICS_DISABLE; - propChangeParams.scope = HidLibrary.NativeMethods.DICS_FLAG_GLOBAL; - propChangeParams.hwProfile = 0; - success = HidLibrary.NativeMethods.SetupDiSetClassInstallParams(deviceInfoSet, ref deviceInfoData, ref propChangeParams, Marshal.SizeOf(propChangeParams)); - if (!success) - { - Console.WriteLine("Error setting class install params, error code = " + Marshal.GetLastWin32Error()); - return false; - } - success = HidLibrary.NativeMethods.SetupDiCallClassInstaller(HidLibrary.NativeMethods.DIF_PROPERTYCHANGE, deviceInfoSet, ref deviceInfoData); - if (!success) - { - Console.WriteLine("Error disabling device, error code = " + Marshal.GetLastWin32Error()); - return false; - - } - propChangeParams.stateChange = HidLibrary.NativeMethods.DICS_ENABLE; - success = HidLibrary.NativeMethods.SetupDiSetClassInstallParams(deviceInfoSet, ref deviceInfoData, ref propChangeParams, Marshal.SizeOf(propChangeParams)); - if (!success) - { - Console.WriteLine("Error setting class install params, error code = " + Marshal.GetLastWin32Error()); - return false; - } - success = HidLibrary.NativeMethods.SetupDiCallClassInstaller(HidLibrary.NativeMethods.DIF_PROPERTYCHANGE, deviceInfoSet, ref deviceInfoData); - if (!success) - { - Console.WriteLine("Error enabling device, error code = " + Marshal.GetLastWin32Error()); - return false; - } - - HidLibrary.NativeMethods.SetupDiDestroyDeviceInfoList(deviceInfoSet); - - return true; - } - catch - { - Console.WriteLine("Can't reenable device"); - return false; - } - } - - private static string DevicePathToInstanceId(string devicePath) - { - string deviceInstanceId = devicePath; - deviceInstanceId = deviceInstanceId.Remove(0, deviceInstanceId.LastIndexOf('\\') + 1); - deviceInstanceId = deviceInstanceId.Remove(deviceInstanceId.LastIndexOf('{')); - deviceInstanceId = deviceInstanceId.Replace('#', '\\'); - if (deviceInstanceId.EndsWith("\\")) - { - deviceInstanceId = deviceInstanceId.Remove(deviceInstanceId.Length - 1); - } - return deviceInstanceId; - } - } -} diff --git a/MiController/DriverSetup.cs b/MiController/DriverSetup.cs deleted file mode 100644 index b9c4949..0000000 --- a/MiController/DriverSetup.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.IO; -using System.Reflection; -using MiController.DriverUtils; - -namespace MiController -{ - public class DriverSetup - { - private static readonly Guid Ds3BusClassGuid = new Guid("f679f562-3164-42ce-a4db-e7ddbe723909"); - public static void Install() - { - string driverDir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, "ScpDriver"); - string devPath = string.Empty; - string instanceId = string.Empty; - - var flags = DifxFlags.DRIVER_PACKAGE_ONLY_IF_DEVICE_PRESENT; - - //if (force) - // flags |= DifxFlags.DRIVER_PACKAGE_FORCE; - - - if (!Devcon.Find(Ds3BusClassGuid, ref devPath, ref instanceId)) - { - bool virtualBusCreated = Devcon.Create("System", new Guid("{4D36E97D-E325-11CE-BFC1-08002BE10318}"), - "root\\ScpVBus\0\0"); - } - - var installer = Difx.Factory(driverDir); - uint result = installer.Install(Path.Combine(driverDir, @"ScpVBus.inf"), flags, out var rebootRequired); - - - if (result != 0) - { - Uninstall(); - throw new Exception("Driver installation failed. Error code: " + result); - } - } - - public static void Uninstall() - { - string driverDir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, "ScpDriver"); - - string devPath = string.Empty; - string instanceId = string.Empty; - - if (!Devcon.Find(Ds3BusClassGuid, ref devPath, ref instanceId)) - { - Devcon.Remove(Ds3BusClassGuid, devPath, instanceId); - } - - var installer = Difx.Factory(driverDir); - installer.Uninstall(Path.Combine(driverDir, @"ScpVBus.inf"), - DifxFlags.DRIVER_PACKAGE_DELETE_FILES, - out var rebootRequired); - } - } -} diff --git a/MiController/DriverUtils/Devcon.cs b/MiController/DriverUtils/Devcon.cs deleted file mode 100644 index 235c331..0000000 --- a/MiController/DriverUtils/Devcon.cs +++ /dev/null @@ -1,242 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace MiController.DriverUtils -{ - public class Devcon - { - public static bool Find(Guid target, ref string path, ref string instanceId, int instance = 0) - { - var deviceInfoSet = IntPtr.Zero; - - try - { - SP_DEVINFO_DATA deviceInterfaceData = new SP_DEVINFO_DATA(), da = new SP_DEVINFO_DATA(); - int bufferSize = 0, memberIndex = 0; - - deviceInfoSet = SetupDiGetClassDevs(ref target, IntPtr.Zero, IntPtr.Zero, - DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); - - deviceInterfaceData.cbSize = da.cbSize = Marshal.SizeOf(deviceInterfaceData); - - while (SetupDiEnumDeviceInterfaces(deviceInfoSet, IntPtr.Zero, ref target, memberIndex, - ref deviceInterfaceData)) - { - SetupDiGetDeviceInterfaceDetail(deviceInfoSet, ref deviceInterfaceData, IntPtr.Zero, 0, - ref bufferSize, ref da); - { - var detailDataBuffer = Marshal.AllocHGlobal(bufferSize); - - Marshal.WriteInt32(detailDataBuffer, - (IntPtr.Size == 4) ? (4 + Marshal.SystemDefaultCharSize) : 8); - - if (SetupDiGetDeviceInterfaceDetail(deviceInfoSet, ref deviceInterfaceData, detailDataBuffer, - bufferSize, ref bufferSize, ref da)) - { - var pDevicePathName = detailDataBuffer + 4; - - path = Marshal.PtrToStringAuto(pDevicePathName).ToUpper(); - - if (memberIndex == instance) - { - var nBytes = 256; - var ptrInstanceBuf = Marshal.AllocHGlobal(nBytes); - - CM_Get_Device_ID(da.Flags, ptrInstanceBuf, nBytes, 0); - instanceId = Marshal.PtrToStringAuto(ptrInstanceBuf).ToUpper(); - - Marshal.FreeHGlobal(ptrInstanceBuf); - return true; - } - } - else Marshal.FreeHGlobal(detailDataBuffer); - } - - memberIndex++; - } - } - finally - { - if (deviceInfoSet != IntPtr.Zero) - { - SetupDiDestroyDeviceInfoList(deviceInfoSet); - } - } - - return false; - } - - public static bool Create(string className, Guid classGuid, string node) - { - var deviceInfoSet = (IntPtr)(-1); - var deviceInfoData = new SP_DEVINFO_DATA(); - - try - { - deviceInfoSet = SetupDiCreateDeviceInfoList(ref classGuid, IntPtr.Zero); - - if (deviceInfoSet == (IntPtr)(-1)) - { - return false; - } - - deviceInfoData.cbSize = Marshal.SizeOf(deviceInfoData); - - if ( - !SetupDiCreateDeviceInfo(deviceInfoSet, className, ref classGuid, null, IntPtr.Zero, - DICD_GENERATE_ID, ref deviceInfoData)) - { - return false; - } - - if ( - !SetupDiSetDeviceRegistryProperty(deviceInfoSet, ref deviceInfoData, SPDRP_HARDWAREID, node, - node.Length * 2)) - { - return false; - } - - if (!SetupDiCallClassInstaller(DIF_REGISTERDEVICE, deviceInfoSet, ref deviceInfoData)) - { - return false; - } - } - finally - { - if (deviceInfoSet != (IntPtr)(-1)) - { - SetupDiDestroyDeviceInfoList(deviceInfoSet); - } - } - - return true; - } - - public static bool Remove(Guid classGuid, string path, string instanceId) - { - var deviceInfoSet = IntPtr.Zero; - - try - { - var deviceInterfaceData = new SP_DEVINFO_DATA(); - - deviceInterfaceData.cbSize = Marshal.SizeOf(deviceInterfaceData); - deviceInfoSet = SetupDiGetClassDevs(ref classGuid, IntPtr.Zero, IntPtr.Zero, - DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); - - if (SetupDiOpenDeviceInfo(deviceInfoSet, instanceId, IntPtr.Zero, 0, ref deviceInterfaceData)) - { - var props = new SP_REMOVEDEVICE_PARAMS {ClassInstallHeader = new SP_CLASSINSTALL_HEADER()}; - - props.ClassInstallHeader.cbSize = Marshal.SizeOf(props.ClassInstallHeader); - props.ClassInstallHeader.InstallFunction = DIF_REMOVE; - - props.Scope = DI_REMOVEDEVICE_GLOBAL; - props.HwProfile = 0x00; - - if (SetupDiSetClassInstallParams(deviceInfoSet, ref deviceInterfaceData, ref props, - Marshal.SizeOf(props))) - { - return SetupDiCallClassInstaller(DIF_REMOVE, deviceInfoSet, ref deviceInterfaceData); - } - } - } - finally - { - if (deviceInfoSet != IntPtr.Zero) - { - SetupDiDestroyDeviceInfoList(deviceInfoSet); - } - } - - return false; - } - - #region Constant and Structure Definitions - - protected const int DIGCF_PRESENT = 0x0002; - protected const int DIGCF_DEVICEINTERFACE = 0x0010; - - protected const int DICD_GENERATE_ID = 0x0001; - protected const int SPDRP_HARDWAREID = 0x0001; - - protected const int DIF_REMOVE = 0x0005; - protected const int DIF_REGISTERDEVICE = 0x0019; - - protected const int DI_REMOVEDEVICE_GLOBAL = 0x0001; - - [StructLayout(LayoutKind.Sequential)] - protected struct SP_DEVINFO_DATA - { - internal int cbSize; - internal Guid ClassGuid; - internal int Flags; - internal IntPtr Reserved; - } - - [StructLayout(LayoutKind.Sequential)] - protected struct SP_CLASSINSTALL_HEADER - { - internal int cbSize; - internal int InstallFunction; - } - - [StructLayout(LayoutKind.Sequential)] - protected struct SP_REMOVEDEVICE_PARAMS - { - internal SP_CLASSINSTALL_HEADER ClassInstallHeader; - internal int Scope; - internal int HwProfile; - } - - #endregion - - #region Interop Definitions - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern IntPtr SetupDiCreateDeviceInfoList(ref Guid ClassGuid, IntPtr hwndParent); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern bool SetupDiDestroyDeviceInfoList(IntPtr DeviceInfoSet); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern bool SetupDiCreateDeviceInfo(IntPtr DeviceInfoSet, string DeviceName, ref Guid ClassGuid, - string DeviceDescription, IntPtr hwndParent, int CreationFlags, ref SP_DEVINFO_DATA DeviceInfoData); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern bool SetupDiSetDeviceRegistryProperty(IntPtr DeviceInfoSet, - ref SP_DEVINFO_DATA DeviceInfoData, int Property, [MarshalAs(UnmanagedType.LPWStr)] string PropertyBuffer, - int PropertyBufferSize); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern bool SetupDiCallClassInstaller(int InstallFunction, IntPtr DeviceInfoSet, - ref SP_DEVINFO_DATA DeviceInfoData); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern IntPtr SetupDiGetClassDevs(ref Guid ClassGuid, IntPtr Enumerator, IntPtr hwndParent, - int Flags); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern bool SetupDiEnumDeviceInterfaces(IntPtr DeviceInfoSet, IntPtr DeviceInfoData, - ref Guid InterfaceClassGuid, int MemberIndex, ref SP_DEVINFO_DATA DeviceInterfaceData); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern bool SetupDiGetDeviceInterfaceDetail(IntPtr DeviceInfoSet, - ref SP_DEVINFO_DATA DeviceInterfaceData, IntPtr DeviceInterfaceDetailData, int DeviceInterfaceDetailDataSize, - ref int RequiredSize, ref SP_DEVINFO_DATA DeviceInfoData); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern int CM_Get_Device_ID(int DevInst, IntPtr Buffer, int BufferLen, int Flags); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern bool SetupDiOpenDeviceInfo(IntPtr DeviceInfoSet, string DeviceInstanceId, - IntPtr hwndParent, int Flags, ref SP_DEVINFO_DATA DeviceInfoData); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - protected static extern bool SetupDiSetClassInstallParams(IntPtr DeviceInfoSet, - ref SP_DEVINFO_DATA DeviceInterfaceData, ref SP_REMOVEDEVICE_PARAMS ClassInstallParams, - int ClassInstallParamsSize); - - #endregion - } -} \ No newline at end of file diff --git a/MiController/DriverUtils/Difx.cs b/MiController/DriverUtils/Difx.cs deleted file mode 100644 index 2188013..0000000 --- a/MiController/DriverUtils/Difx.cs +++ /dev/null @@ -1,192 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace MiController.DriverUtils -{ - [Flags] - public enum DifxFlags - { - DRIVER_PACKAGE_REPAIR = 0x00000001, - DRIVER_PACKAGE_SILENT = 0x00000002, - DRIVER_PACKAGE_FORCE = 0x00000004, - DRIVER_PACKAGE_ONLY_IF_DEVICE_PRESENT = 0x00000008, - DRIVER_PACKAGE_LEGACY_MODE = 0x00000010, - DRIVER_PACKAGE_DELETE_FILES = 0x00000020, - } - - public enum DifxLog - { - DIFXAPI_SUCCESS = 0, - DIFXAPI_INFO = 1, - DIFXAPI_WARNING = 2, - DIFXAPI_ERROR = 3, - } - - /// - /// Driver Install Frameworks API (DIFxAPI) - /// - public class Difx - { - public delegate void DIFLOGCALLBACK( - DifxLog EventType, - Int32 ErrorCode, - [MarshalAs(UnmanagedType.LPTStr)] String EventDescription, - IntPtr CallbackContext - ); - - public void Logger( - DifxLog EventType, - Int32 ErrorCode, - [MarshalAs(UnmanagedType.LPTStr)] String EventDescription, - IntPtr CallbackContext) - { - if (onLogEvent != null) onLogEvent(EventType, ErrorCode, EventDescription); - } - - protected DIFLOGCALLBACK m_LogCallback; - - public delegate void LogEventHandler(DifxLog Event, Int32 Error, String Description); - public LogEventHandler onLogEvent; - - protected Difx() - { - m_LogCallback = new DIFLOGCALLBACK(Logger); - } - - public virtual UInt32 Preinstall(String InfPath, DifxFlags Flags) - { - return 0xFFFFFFFF; - } - - public virtual UInt32 Install(String InfPath, DifxFlags Flags, out Boolean RebootRequired) - { - RebootRequired = false; - return 0xFFFFFFFF; - } - - public virtual UInt32 Uninstall(String InfPath, DifxFlags Flags, out Boolean RebootRequired) - { - RebootRequired = false; - return 0xFFFFFFFF; - } - - public static Difx Factory(string driverDir) - { - Difx retVal; - Environment.CurrentDirectory = driverDir; - if (Environment.Is64BitProcess) - { - retVal = new Difx64(); - } - else - { - retVal = new Difx32(); - } - - return retVal; - } - } - - /// - /// Driver Install Frameworks API (DIFxAPI) for x86 platform. - /// - public class Difx32 : Difx - { - [DllImport(@".\x86\DIFxAPI.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] - private static extern UInt32 DriverPackagePreinstall( - [MarshalAs(UnmanagedType.LPTStr)] String DriverPackageInfPath, - [MarshalAs(UnmanagedType.U4)] UInt32 Flags - ); - - [DllImport(@".\x86\DIFxAPI.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] - private static extern UInt32 DriverPackageInstall( - [MarshalAs(UnmanagedType.LPTStr)] String DriverPackageInfPath, - [MarshalAs(UnmanagedType.U4)] UInt32 Flags, - IntPtr pInstallerInfo, - [MarshalAs(UnmanagedType.Bool)] out Boolean pNeedReboot - ); - - [DllImport(@".\x86\DIFxAPI.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] - private static extern UInt32 DriverPackageUninstall( - [MarshalAs(UnmanagedType.LPTStr)] String DriverPackageInfPath, - [MarshalAs(UnmanagedType.U4)] UInt32 Flags, - IntPtr pInstallerInfo, - [MarshalAs(UnmanagedType.Bool)] out Boolean pNeedReboot - ); - - [DllImport(@".\x86\DIFxAPI.dll", CharSet = CharSet.Auto, SetLastError = true)] - public static extern void SetDifxLogCallback(DIFLOGCALLBACK LogCallback, IntPtr CallbackContext); - - public Difx32() - { - SetDifxLogCallback(m_LogCallback, IntPtr.Zero); - } - - public override UInt32 Preinstall(String InfPath, DifxFlags Flags) - { - return DriverPackagePreinstall(InfPath, (UInt32)Flags); - } - - public override UInt32 Install(String InfPath, DifxFlags Flags, out Boolean RebootRequired) - { - return DriverPackageInstall(InfPath, (UInt32)Flags, IntPtr.Zero, out RebootRequired); - } - - public override UInt32 Uninstall(String InfPath, DifxFlags Flags, out Boolean RebootRequired) - { - return DriverPackageUninstall(InfPath, (UInt32)Flags, IntPtr.Zero, out RebootRequired); - } - } - - /// - /// Driver Install Frameworks API (DIFxAPI) for x64 platform. - /// - public class Difx64 : Difx - { - [DllImport(@".\amd64\DIFxAPI.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] - private static extern UInt32 DriverPackagePreinstall( - [MarshalAs(UnmanagedType.LPTStr)] String DriverPackageInfPath, - [MarshalAs(UnmanagedType.U4)] UInt32 Flags - ); - - [DllImport(@".\amd64\DIFxAPI.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] - private static extern UInt32 DriverPackageInstall( - [MarshalAs(UnmanagedType.LPTStr)] String DriverPackageInfPath, - [MarshalAs(UnmanagedType.U4)] UInt32 Flags, - IntPtr pInstallerInfo, - [MarshalAs(UnmanagedType.Bool)] out Boolean pNeedReboot - ); - - [DllImport(@".\ScpDriver\amd64\DIFxAPI.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] - private static extern UInt32 DriverPackageUninstall( - [MarshalAs(UnmanagedType.LPTStr)] String DriverPackageInfPath, - [MarshalAs(UnmanagedType.U4)] UInt32 Flags, - IntPtr pInstallerInfo, - [MarshalAs(UnmanagedType.Bool)] out Boolean pNeedReboot - ); - - [DllImport(@".\amd64\DIFxAPI.dll", CharSet = CharSet.Auto, SetLastError = true)] - public static extern void SetDifxLogCallback(DIFLOGCALLBACK LogCallback, IntPtr CallbackContext); - - - public Difx64() - { - SetDifxLogCallback(m_LogCallback, IntPtr.Zero); - } - - public override UInt32 Preinstall(String InfPath, DifxFlags Flags) - { - return DriverPackagePreinstall(InfPath, (UInt32)Flags); - } - - public override UInt32 Install(String InfPath, DifxFlags Flags, out Boolean RebootRequired) - { - return DriverPackageInstall(InfPath, (UInt32)Flags, (IntPtr)0, out RebootRequired); - } - - public override UInt32 Uninstall(String InfPath, DifxFlags Flags, out Boolean RebootRequired) - { - return DriverPackageUninstall(InfPath, (UInt32)Flags, (IntPtr)0, out RebootRequired); - } - } -} diff --git a/MiController/HidLibrary/HidDevice.cs b/MiController/HidLibrary/HidDevice.cs index 48bd34d..09f753f 100644 --- a/MiController/HidLibrary/HidDevice.cs +++ b/MiController/HidLibrary/HidDevice.cs @@ -27,10 +27,6 @@ namespace HidLibrary private delegate bool WriteDelegate(byte[] data, int timeout); private delegate bool WriteReportDelegate(HidReport report, int timeout); - private NativeOverlapped read_overlapped; - private byte[] read_buffer; - private bool reading; - internal HidDevice(string devicePath, string description = null) { _deviceEventMonitor = new HidDeviceEventMonitor(this); @@ -106,10 +102,6 @@ namespace HidLibrary } IsOpen = Handle.ToInt32() != NativeMethods.INVALID_HANDLE_VALUE; - if (!IsOpen) - { - throw new Exception("Error opening HID device."); - } } @@ -127,7 +119,9 @@ namespace HidLibrary public HidDeviceData Read(int timeout) { - if (IsOpen == false) return new HidDeviceData(HidDeviceData.ReadStatus.ReadError); + if (IsConnected) + { + if (IsOpen == false) OpenDevice(_deviceReadMode, _deviceWriteMode, _deviceShareMode); try { return ReadData(timeout); @@ -136,6 +130,9 @@ namespace HidLibrary { return new HidDeviceData(HidDeviceData.ReadStatus.ReadError); } + + } + return new HidDeviceData(HidDeviceData.ReadStatus.NotConnected); } public void Read(ReadCallback callback) @@ -184,6 +181,22 @@ namespace HidLibrary return await Task.Factory.FromAsync(readReportDelegate.BeginInvoke, readReportDelegate.EndInvoke, timeout, null); } + /// + /// Reads an input report from the Control channel. This method provides access to report data for devices that + /// do not use the interrupt channel to communicate for specific usages. + /// + /// The report ID to read from the device + /// The HID report that is read. The report will contain the success status of the read request + /// + public HidReport ReadReportSync(byte reportId) + { + byte[] cmdBuffer = new byte[Capabilities.InputReportByteLength]; + cmdBuffer[0] = reportId; + bool bSuccess = NativeMethods.HidD_GetInputReport(Handle, cmdBuffer, cmdBuffer.Length); + HidDeviceData deviceData = new HidDeviceData(cmdBuffer, bSuccess ? HidDeviceData.ReadStatus.Success : HidDeviceData.ReadStatus.NoDataRead); + return new HidReport(Capabilities.InputReportByteLength, deviceData); + } + public bool ReadFeatureData(out byte[] data, byte reportId = 0) { if (_deviceCapabilities.FeatureReportByteLength <= 0) @@ -314,6 +327,8 @@ namespace HidLibrary public bool Write(byte[] data, int timeout) { + if (IsConnected) + { if (IsOpen == false) OpenDevice(_deviceReadMode, _deviceWriteMode, _deviceShareMode); try { @@ -323,6 +338,8 @@ namespace HidLibrary { return false; } + } + return false; } public void Write(byte[] data, WriteCallback callback) @@ -365,6 +382,25 @@ namespace HidLibrary writeReportDelegate.BeginInvoke(report, timeout, EndWriteReport, asyncState); } + /// + /// Handle data transfers on the control channel. This method places data on the control channel for devices + /// that do not support the interupt transfers + /// + /// The outbound HID report + /// The result of the tranfer request: true if successful otherwise false + /// + public bool WriteReportSync(HidReport report) + { + + if (null != report) + { + byte[] buffer = report.GetBytes(); + return (NativeMethods.HidD_SetOutputReport(Handle, buffer, buffer.Length)); + } + else + throw new ArgumentException("The output report is null, it must be allocated before you call this method", "report"); + } + public async Task WriteReportAsync(HidReport report, int timeout = 0) { var writeReportDelegate = new WriteReportDelegate(WriteReport); @@ -392,7 +428,7 @@ namespace HidLibrary if (IsOpen) hidHandle = Handle; else - return false; + hidHandle = OpenDeviceIO(_devicePath, NativeMethods.ACCESS_NONE); //var overlapped = new NativeOverlapped(); success = NativeMethods.HidD_SetFeature(hidHandle, buffer, buffer.Length); @@ -401,7 +437,11 @@ namespace HidLibrary { throw new Exception(string.Format("Error accessing HID device '{0}'.", _devicePath), exception); } - + finally + { + if (hidHandle != IntPtr.Zero && hidHandle != Handle) + CloseDeviceIO(hidHandle); + } return success; } @@ -547,58 +587,70 @@ namespace HidLibrary { var buffer = new byte[] { }; var status = HidDeviceData.ReadStatus.NoDataRead; + IntPtr nonManagedBuffer; if (_deviceCapabilities.InputReportByteLength > 0) { uint bytesRead = 0; - + buffer = CreateInputBuffer(); + nonManagedBuffer = Marshal.AllocHGlobal(buffer.Length); if (_deviceReadMode == DeviceMode.Overlapped) { - if (!reading) - { - read_buffer = CreateInputBuffer(); - var security = new NativeMethods.SECURITY_ATTRIBUTES(); - read_overlapped = new NativeOverlapped(); + var security = new NativeMethods.SECURITY_ATTRIBUTES(); + var overlapped = new NativeOverlapped(); + var overlapTimeout = timeout <= 0 ? NativeMethods.WAIT_INFINITE : timeout; - security.lpSecurityDescriptor = IntPtr.Zero; - security.bInheritHandle = true; - security.nLength = Marshal.SizeOf(security); + security.lpSecurityDescriptor = IntPtr.Zero; + security.bInheritHandle = true; + security.nLength = Marshal.SizeOf(security); - read_overlapped.OffsetLow = 0; - read_overlapped.OffsetHigh = 0; - read_overlapped.EventHandle = NativeMethods.CreateEvent(ref security, Convert.ToInt32(false), Convert.ToInt32(true), string.Empty); - NativeMethods.ReadFile(Handle, read_buffer, (uint)read_buffer.Length, out bytesRead, ref read_overlapped); - } + overlapped.OffsetLow = 0; + overlapped.OffsetHigh = 0; + overlapped.EventHandle = NativeMethods.CreateEvent(ref security, Convert.ToInt32(false), Convert.ToInt32(true), string.Empty); try { - var result = NativeMethods.WaitForSingleObject(read_overlapped.EventHandle, timeout); + var success = NativeMethods.ReadFile(Handle, nonManagedBuffer, (uint)buffer.Length, out bytesRead, ref overlapped); - switch (result) + if (success) { - case NativeMethods.WAIT_OBJECT_0: status = HidDeviceData.ReadStatus.Success; reading = false; CloseDeviceIO(read_overlapped.EventHandle); return new HidDeviceData(read_buffer, status); - case NativeMethods.WAIT_TIMEOUT: - status = HidDeviceData.ReadStatus.WaitTimedOut; - buffer = new byte[] { }; - reading = true; - break; - case NativeMethods.WAIT_FAILED: - status = HidDeviceData.ReadStatus.WaitFail; - buffer = new byte[] { }; - reading = false; - CloseDeviceIO(read_overlapped.EventHandle); - break; - default: - status = HidDeviceData.ReadStatus.NoDataRead; - buffer = new byte[] { }; - reading = false; - CloseDeviceIO(read_overlapped.EventHandle); - break; + status = HidDeviceData.ReadStatus.Success; // No check here to see if bytesRead > 0 . Perhaps not necessary? } + else + { + var result = NativeMethods.WaitForSingleObject(overlapped.EventHandle, overlapTimeout); + + switch (result) + { + case NativeMethods.WAIT_OBJECT_0: + status = HidDeviceData.ReadStatus.Success; + NativeMethods.GetOverlappedResult(Handle, ref overlapped, out bytesRead, false); + break; + case NativeMethods.WAIT_TIMEOUT: + status = HidDeviceData.ReadStatus.WaitTimedOut; + NativeMethods.CancelIo(Handle); + buffer = new byte[] { }; + break; + case NativeMethods.WAIT_FAILED: + status = HidDeviceData.ReadStatus.WaitFail; + buffer = new byte[] { }; + break; + default: + status = HidDeviceData.ReadStatus.NoDataRead; + buffer = new byte[] { }; + break; + } + } + Marshal.Copy(nonManagedBuffer, buffer, 0, (int)bytesRead); + } + catch { status = HidDeviceData.ReadStatus.ReadError; } + finally + { + CloseDeviceIO(overlapped.EventHandle); + Marshal.FreeHGlobal(nonManagedBuffer); } - catch { status = HidDeviceData.ReadStatus.ReadError; reading = false; CloseDeviceIO(read_overlapped.EventHandle); } } else { @@ -606,10 +658,12 @@ namespace HidLibrary { var overlapped = new NativeOverlapped(); - NativeMethods.ReadFile(Handle, buffer, (uint)buffer.Length, out bytesRead, ref overlapped); + NativeMethods.ReadFile(Handle, nonManagedBuffer, (uint)buffer.Length, out bytesRead, ref overlapped); status = HidDeviceData.ReadStatus.Success; + Marshal.Copy(nonManagedBuffer, buffer, 0, (int)bytesRead); } catch { status = HidDeviceData.ReadStatus.ReadError; } + finally { Marshal.FreeHGlobal(nonManagedBuffer); } } } return new HidDeviceData(buffer, status); diff --git a/MiController/HidLibrary/HidDeviceData.cs b/MiController/HidLibrary/HidDeviceData.cs index 5830fbe..22f61dc 100644 --- a/MiController/HidLibrary/HidDeviceData.cs +++ b/MiController/HidLibrary/HidDeviceData.cs @@ -13,10 +13,10 @@ } public HidDeviceData(ReadStatus status) - { - Data = new byte[] {}; - Status = status; - } + { + Data = new byte[] { }; + Status = status; + } public HidDeviceData(byte[] data, ReadStatus status) { diff --git a/MiController/HidLibrary/HidDevices.cs b/MiController/HidLibrary/HidDevices.cs index e66fc6e..d71f33c 100644 --- a/MiController/HidLibrary/HidDevices.cs +++ b/MiController/HidLibrary/HidDevices.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; +using System.Text; namespace HidLibrary { @@ -32,23 +33,31 @@ namespace HidLibrary public static IEnumerable Enumerate(int vendorId, params int[] productIds) { - return EnumerateDevices().Select(x => new HidDevice(x.Path, x.Description)).Where(x => x.Attributes.VendorId == vendorId && + return EnumerateDevices().Select(x => new HidDevice(x.Path, x.Description)).Where(x => x.Attributes.VendorId == vendorId && productIds.Contains(x.Attributes.ProductId)); } + public static IEnumerable Enumerate(int vendorId, int productId, ushort UsagePage) + { + return EnumerateDevices().Select(x => new HidDevice(x.Path, x.Description)).Where(x => x.Attributes.VendorId == vendorId && + productId == (ushort)x.Attributes.ProductId && (ushort)x.Capabilities.UsagePage == UsagePage); + } + public static IEnumerable Enumerate(int vendorId) { return EnumerateDevices().Select(x => new HidDevice(x.Path, x.Description)).Where(x => x.Attributes.VendorId == vendorId); } - private class DeviceInfo { public string Path { get; set; } public string Description { get; set; } } + public class DeviceInfo { public string Path { get; set; } public string Description { get; set; } public string InstanceID { get; set; } } - private static IEnumerable EnumerateDevices() + public static IEnumerable EnumerateDevices() { var devices = new List(); var hidClass = HidClassGuid; var deviceInfoSet = NativeMethods.SetupDiGetClassDevs(ref hidClass, null, 0, NativeMethods.DIGCF_PRESENT | NativeMethods.DIGCF_DEVICEINTERFACE); + var buf = new char[1024]; + if (deviceInfoSet.ToInt64() != NativeMethods.INVALID_HANDLE_VALUE) { var deviceInfoData = CreateDeviceInfoData(); @@ -58,6 +67,9 @@ namespace HidLibrary { deviceIndex += 1; + NativeMethods.SetupDiGetDeviceInstanceId(deviceInfoSet, ref deviceInfoData, buf, buf.Length, out var requiredSize); + var instid = new string(buf, 0, requiredSize - 1); + var deviceInterfaceData = new NativeMethods.SP_DEVICE_INTERFACE_DATA(); deviceInterfaceData.cbSize = Marshal.SizeOf(deviceInterfaceData); var deviceInterfaceIndex = 0; @@ -66,9 +78,9 @@ namespace HidLibrary { deviceInterfaceIndex++; var devicePath = GetDevicePath(deviceInfoSet, deviceInterfaceData); - var description = GetBusReportedDeviceDescription(deviceInfoSet, ref deviceInfoData) ?? + var description = GetBusReportedDeviceDescription(deviceInfoSet, ref deviceInfoData) ?? GetDeviceDescription(deviceInfoSet, ref deviceInfoData); - devices.Add(new DeviceInfo { Path = devicePath, Description = description }); + devices.Add(new DeviceInfo { Path = devicePath, Description = description, InstanceID = instid }); } } NativeMethods.SetupDiDestroyDeviceInfoList(deviceInfoSet); @@ -95,7 +107,7 @@ namespace HidLibrary NativeMethods.SetupDiGetDeviceInterfaceDetailBuffer(deviceInfoSet, ref deviceInterfaceData, IntPtr.Zero, 0, ref bufferSize, IntPtr.Zero); - return NativeMethods.SetupDiGetDeviceInterfaceDetail(deviceInfoSet, ref deviceInterfaceData, ref interfaceDetail, bufferSize, ref bufferSize, IntPtr.Zero) ? + return NativeMethods.SetupDiGetDeviceInterfaceDetail(deviceInfoSet, ref deviceInterfaceData, ref interfaceDetail, bufferSize, ref bufferSize, IntPtr.Zero) ? interfaceDetail.DevicePath : null; } diff --git a/MiController/HidLibrary/HidFastReadEnumerator.cs b/MiController/HidLibrary/HidFastReadEnumerator.cs new file mode 100644 index 0000000..d555330 --- /dev/null +++ b/MiController/HidLibrary/HidFastReadEnumerator.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using System.Linq; + +namespace HidLibrary +{ + public class HidFastReadEnumerator : IHidEnumerator + { + public bool IsConnected(string devicePath) + { + return HidDevices.IsConnected(devicePath); + } + + public IHidDevice GetDevice(string devicePath) + { + return Enumerate(devicePath).FirstOrDefault() as IHidDevice; + } + + public IEnumerable Enumerate() + { + return HidDevices.EnumerateDevices(). + Select(d => new HidFastReadDevice(d.Path, d.Description) as IHidDevice); + } + + public IEnumerable Enumerate(string devicePath) + { + return HidDevices.EnumerateDevices().Where(x => x.Path == devicePath). + Select(d => new HidFastReadDevice(d.Path, d.Description) as IHidDevice); + } + + public IEnumerable Enumerate(int vendorId, params int[] productIds) + { + return HidDevices.EnumerateDevices().Select(d => new HidFastReadDevice(d.Path, d.Description)). + Where(f => f.Attributes.VendorId == vendorId && productIds.Contains(f.Attributes.ProductId)). + Select(d => d as IHidDevice); + } + + public IEnumerable Enumerate(int vendorId) + { + return HidDevices.EnumerateDevices().Select(d => new HidFastReadDevice(d.Path, d.Description)). + Where(f => f.Attributes.VendorId == vendorId). + Select(d => d as IHidDevice); + } + } +} \ No newline at end of file diff --git a/MiController/HidLibrary/HidReport.cs b/MiController/HidLibrary/HidReport.cs index c550fd3..cbd9f49 100644 --- a/MiController/HidLibrary/HidReport.cs +++ b/MiController/HidLibrary/HidReport.cs @@ -5,7 +5,7 @@ namespace HidLibrary public class HidReport { private byte _reportId; - private byte[] _data = new byte[] {}; + private byte[] _data = new byte[] { }; private readonly HidDeviceData.ReadStatus _status; diff --git a/MiController/HidLibrary/IHidDevice.cs b/MiController/HidLibrary/IHidDevice.cs index d352c28..66f6cc6 100644 --- a/MiController/HidLibrary/IHidDevice.cs +++ b/MiController/HidLibrary/IHidDevice.cs @@ -34,7 +34,7 @@ namespace HidLibrary bool IsConnected { get; } string Description { get; } HidDeviceCapabilities Capabilities { get; } - HidDeviceAttributes Attributes { get; } + HidDeviceAttributes Attributes { get; } string DevicePath { get; } bool MonitorDeviceEvents { get; set; } @@ -42,7 +42,7 @@ namespace HidLibrary void OpenDevice(); void OpenDevice(DeviceMode readMode, DeviceMode writeMode, ShareMode shareMode); - + void CloseDevice(); HidDeviceData Read(); diff --git a/MiController/HidLibrary/NativeMethods.cs b/MiController/HidLibrary/NativeMethods.cs index 861c89c..fea85f1 100644 --- a/MiController/HidLibrary/NativeMethods.cs +++ b/MiController/HidLibrary/NativeMethods.cs @@ -4,369 +4,344 @@ using System.Runtime.InteropServices; namespace HidLibrary { internal static class NativeMethods - { - internal const int FILE_FLAG_OVERLAPPED = 0x40000000; - internal const short FILE_SHARE_READ = 0x1; - internal const short FILE_SHARE_WRITE = 0x2; - internal const uint GENERIC_READ = 0x80000000; - internal const uint GENERIC_WRITE = 0x40000000; - internal const int ACCESS_NONE = 0; - internal const int INVALID_HANDLE_VALUE = -1; - internal const short OPEN_EXISTING = 3; - internal const int WAIT_TIMEOUT = 0x102; - internal const uint WAIT_OBJECT_0 = 0; - internal const uint WAIT_FAILED = 0xffffffff; + { + internal const int FILE_FLAG_OVERLAPPED = 0x40000000; + internal const short FILE_SHARE_READ = 0x1; + internal const short FILE_SHARE_WRITE = 0x2; + internal const uint GENERIC_READ = 0x80000000; + internal const uint GENERIC_WRITE = 0x40000000; + internal const int ACCESS_NONE = 0; + internal const int INVALID_HANDLE_VALUE = -1; + internal const short OPEN_EXISTING = 3; + internal const int WAIT_TIMEOUT = 0x102; + internal const uint WAIT_OBJECT_0 = 0; + internal const uint WAIT_FAILED = 0xffffffff; - internal const int WAIT_INFINITE = 0xffff; - [StructLayout(LayoutKind.Sequential)] - internal struct OVERLAPPED - { - public int Internal; - public int InternalHigh; - public int Offset; - public int OffsetHigh; - public int hEvent; - } + internal const int WAIT_INFINITE = -1; + [StructLayout(LayoutKind.Sequential)] + internal struct OVERLAPPED + { + public int Internal; + public int InternalHigh; + public int Offset; + public int OffsetHigh; + public int hEvent; + } - [StructLayout(LayoutKind.Sequential)] - internal struct SECURITY_ATTRIBUTES - { - public int nLength; - public IntPtr lpSecurityDescriptor; - public bool bInheritHandle; - } + [StructLayout(LayoutKind.Sequential)] + internal struct SECURITY_ATTRIBUTES + { + public int nLength; + public IntPtr lpSecurityDescriptor; + public bool bInheritHandle; + } - [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - static internal extern bool CancelIo(IntPtr hFile); + [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] + static internal extern bool CancelIo(IntPtr hFile); - [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - static internal extern bool CancelIoEx(IntPtr hFile, IntPtr lpOverlapped); + [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] + static internal extern bool CancelIoEx(IntPtr hFile, IntPtr lpOverlapped); - [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - static internal extern bool CloseHandle(IntPtr hObject); + [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] + static internal extern bool CloseHandle(IntPtr hObject); - [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - static internal extern bool CancelSynchronousIo(IntPtr hObject); + [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] + static internal extern bool CancelSynchronousIo(IntPtr hObject); - [DllImport("kernel32.dll", CharSet = CharSet.Auto)] - static internal extern IntPtr CreateEvent(ref SECURITY_ATTRIBUTES securityAttributes, int bManualReset, int bInitialState, string lpName); + [DllImport("kernel32.dll", CharSet = CharSet.Auto)] + static internal extern IntPtr CreateEvent(ref SECURITY_ATTRIBUTES securityAttributes, int bManualReset, int bInitialState, string lpName); - [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] - static internal extern IntPtr CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, ref SECURITY_ATTRIBUTES lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile); + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + static internal extern IntPtr CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, ref SECURITY_ATTRIBUTES lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile); - [DllImport("kernel32.dll", SetLastError = true)] - static internal extern bool ReadFile(IntPtr hFile, [Out] byte[] lpBuffer, uint nNumberOfBytesToRead, out uint lpNumberOfBytesRead, [In] ref System.Threading.NativeOverlapped lpOverlapped); + [DllImport("kernel32.dll", SetLastError = true)] + static internal extern bool ReadFile(IntPtr hFile, IntPtr lpBuffer, uint nNumberOfBytesToRead, out uint lpNumberOfBytesRead, [In] ref System.Threading.NativeOverlapped lpOverlapped); - [DllImport("kernel32.dll")] - static internal extern uint WaitForSingleObject(IntPtr hHandle, int dwMilliseconds); + [DllImport("kernel32.dll")] + static internal extern uint WaitForSingleObject(IntPtr hHandle, int dwMilliseconds); - [DllImport("kernel32.dll")] - static internal extern bool GetOverlappedResult(IntPtr hFile, [In] ref System.Threading.NativeOverlapped lpOverlapped, out uint lpNumberOfBytesRead, bool bwait); + [DllImport("kernel32.dll", SetLastError = true)] + static internal extern bool GetOverlappedResult(IntPtr hFile, [In] ref System.Threading.NativeOverlapped lpOverlapped, out uint lpNumberOfBytesTransferred, bool bWait); - [DllImport("kernel32.dll")] - static internal extern bool WriteFile(IntPtr hFile, byte[] lpBuffer, uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, [In] ref System.Threading.NativeOverlapped lpOverlapped); + [DllImport("kernel32.dll")] + static internal extern bool WriteFile(IntPtr hFile, byte[] lpBuffer, uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, [In] ref System.Threading.NativeOverlapped lpOverlapped); - internal const int DBT_DEVICEARRIVAL = 0x8000; - internal const int DBT_DEVICEREMOVECOMPLETE = 0x8004; - internal const int DBT_DEVTYP_DEVICEINTERFACE = 5; - internal const int DBT_DEVTYP_HANDLE = 6; - internal const int DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 4; - internal const int DEVICE_NOTIFY_SERVICE_HANDLE = 1; - internal const int DEVICE_NOTIFY_WINDOW_HANDLE = 0; - internal const int WM_DEVICECHANGE = 0x219; - internal const short DIGCF_PRESENT = 0x2; - internal const short DIGCF_DEVICEINTERFACE = 0x10; - internal const int DIGCF_ALLCLASSES = 0x4; + internal const int DBT_DEVICEARRIVAL = 0x8000; + internal const int DBT_DEVICEREMOVECOMPLETE = 0x8004; + internal const int DBT_DEVTYP_DEVICEINTERFACE = 5; + internal const int DBT_DEVTYP_HANDLE = 6; + internal const int DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 4; + internal const int DEVICE_NOTIFY_SERVICE_HANDLE = 1; + internal const int DEVICE_NOTIFY_WINDOW_HANDLE = 0; + internal const int WM_DEVICECHANGE = 0x219; + internal const short DIGCF_PRESENT = 0x2; + internal const short DIGCF_DEVICEINTERFACE = 0x10; + internal const int DIGCF_ALLCLASSES = 0x4; - internal const int MAX_DEV_LEN = 1000; - internal const int SPDRP_ADDRESS = 0x1c; - internal const int SPDRP_BUSNUMBER = 0x15; - internal const int SPDRP_BUSTYPEGUID = 0x13; - internal const int SPDRP_CAPABILITIES = 0xf; - internal const int SPDRP_CHARACTERISTICS = 0x1b; - internal const int SPDRP_CLASS = 7; - internal const int SPDRP_CLASSGUID = 8; - internal const int SPDRP_COMPATIBLEIDS = 2; - internal const int SPDRP_CONFIGFLAGS = 0xa; - internal const int SPDRP_DEVICE_POWER_DATA = 0x1e; - internal const int SPDRP_DEVICEDESC = 0; - internal const int SPDRP_DEVTYPE = 0x19; - internal const int SPDRP_DRIVER = 9; - internal const int SPDRP_ENUMERATOR_NAME = 0x16; - internal const int SPDRP_EXCLUSIVE = 0x1a; - internal const int SPDRP_FRIENDLYNAME = 0xc; - internal const int SPDRP_HARDWAREID = 1; - internal const int SPDRP_LEGACYBUSTYPE = 0x14; - internal const int SPDRP_LOCATION_INFORMATION = 0xd; - internal const int SPDRP_LOWERFILTERS = 0x12; - internal const int SPDRP_MFG = 0xb; - internal const int SPDRP_PHYSICAL_DEVICE_OBJECT_NAME = 0xe; - internal const int SPDRP_REMOVAL_POLICY = 0x1f; - internal const int SPDRP_REMOVAL_POLICY_HW_DEFAULT = 0x20; - internal const int SPDRP_REMOVAL_POLICY_OVERRIDE = 0x21; - internal const int SPDRP_SECURITY = 0x17; - internal const int SPDRP_SECURITY_SDS = 0x18; - internal const int SPDRP_SERVICE = 4; - internal const int SPDRP_UI_NUMBER = 0x10; - internal const int SPDRP_UI_NUMBER_DESC_FORMAT = 0x1d; + internal const int MAX_DEV_LEN = 1000; + internal const int SPDRP_ADDRESS = 0x1c; + internal const int SPDRP_BUSNUMBER = 0x15; + internal const int SPDRP_BUSTYPEGUID = 0x13; + internal const int SPDRP_CAPABILITIES = 0xf; + internal const int SPDRP_CHARACTERISTICS = 0x1b; + internal const int SPDRP_CLASS = 7; + internal const int SPDRP_CLASSGUID = 8; + internal const int SPDRP_COMPATIBLEIDS = 2; + internal const int SPDRP_CONFIGFLAGS = 0xa; + internal const int SPDRP_DEVICE_POWER_DATA = 0x1e; + internal const int SPDRP_DEVICEDESC = 0; + internal const int SPDRP_DEVTYPE = 0x19; + internal const int SPDRP_DRIVER = 9; + internal const int SPDRP_ENUMERATOR_NAME = 0x16; + internal const int SPDRP_EXCLUSIVE = 0x1a; + internal const int SPDRP_FRIENDLYNAME = 0xc; + internal const int SPDRP_HARDWAREID = 1; + internal const int SPDRP_LEGACYBUSTYPE = 0x14; + internal const int SPDRP_LOCATION_INFORMATION = 0xd; + internal const int SPDRP_LOWERFILTERS = 0x12; + internal const int SPDRP_MFG = 0xb; + internal const int SPDRP_PHYSICAL_DEVICE_OBJECT_NAME = 0xe; + internal const int SPDRP_REMOVAL_POLICY = 0x1f; + internal const int SPDRP_REMOVAL_POLICY_HW_DEFAULT = 0x20; + internal const int SPDRP_REMOVAL_POLICY_OVERRIDE = 0x21; + internal const int SPDRP_SECURITY = 0x17; + internal const int SPDRP_SECURITY_SDS = 0x18; + internal const int SPDRP_SERVICE = 4; + internal const int SPDRP_UI_NUMBER = 0x10; + internal const int SPDRP_UI_NUMBER_DESC_FORMAT = 0x1d; - internal const int DIF_PROPERTYCHANGE = 0x12; - internal const int DICS_ENABLE = 1; - internal const int DICS_DISABLE = 2; - internal const int DICS_FLAG_GLOBAL = 1; + internal const int SPDRP_UPPERFILTERS = 0x11; + [StructLayout(LayoutKind.Sequential)] + internal class DEV_BROADCAST_DEVICEINTERFACE + { + internal int dbcc_size; + internal int dbcc_devicetype; + internal int dbcc_reserved; + internal Guid dbcc_classguid; + internal short dbcc_name; + } - internal const int SPDRP_UPPERFILTERS = 0x11; + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + internal class DEV_BROADCAST_DEVICEINTERFACE_1 + { + internal int dbcc_size; + internal int dbcc_devicetype; + internal int dbcc_reserved; + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.U1, SizeConst = 16)] + internal byte[] dbcc_classguid; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 255)] + internal char[] dbcc_name; + } - [StructLayout(LayoutKind.Sequential)] - internal class DEV_BROADCAST_DEVICEINTERFACE - { - internal int dbcc_size; - internal int dbcc_devicetype; - internal int dbcc_reserved; - internal Guid dbcc_classguid; - internal short dbcc_name; - } + [StructLayout(LayoutKind.Sequential)] + internal class DEV_BROADCAST_HANDLE + { + internal int dbch_size; + internal int dbch_devicetype; + internal int dbch_reserved; + internal int dbch_handle; + internal int dbch_hdevnotify; + } - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - internal class DEV_BROADCAST_DEVICEINTERFACE_1 - { - internal int dbcc_size; - internal int dbcc_devicetype; - internal int dbcc_reserved; - [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.U1, SizeConst = 16)] - internal byte[] dbcc_classguid; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 255)] - internal char[] dbcc_name; - } + [StructLayout(LayoutKind.Sequential)] + internal class DEV_BROADCAST_HDR + { + internal int dbch_size; + internal int dbch_devicetype; + internal int dbch_reserved; + } - [StructLayout(LayoutKind.Sequential)] - internal class DEV_BROADCAST_HANDLE - { - internal int dbch_size; - internal int dbch_devicetype; - internal int dbch_reserved; - internal int dbch_handle; - internal int dbch_hdevnotify; - } + [StructLayout(LayoutKind.Sequential)] + internal struct SP_DEVICE_INTERFACE_DATA + { + internal int cbSize; + internal System.Guid InterfaceClassGuid; + internal int Flags; + internal IntPtr Reserved; + } - [StructLayout(LayoutKind.Sequential)] - internal class DEV_BROADCAST_HDR - { - internal int dbch_size; - internal int dbch_devicetype; - internal int dbch_reserved; - } + [StructLayout(LayoutKind.Sequential)] + internal struct SP_DEVINFO_DATA + { + internal int cbSize; + internal Guid ClassGuid; + internal int DevInst; + internal IntPtr Reserved; + } - [StructLayout(LayoutKind.Sequential)] - internal struct SP_DEVICE_INTERFACE_DATA - { - internal int cbSize; - internal System.Guid InterfaceClassGuid; - internal int Flags; - internal IntPtr Reserved; - } + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] + internal struct SP_DEVICE_INTERFACE_DETAIL_DATA + { + internal int Size; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + internal string DevicePath; + } - [StructLayout(LayoutKind.Sequential)] - internal struct SP_DEVINFO_DATA - { - internal int cbSize; - internal Guid ClassGuid; - internal int DevInst; - internal IntPtr Reserved; - } + [StructLayout(LayoutKind.Sequential)] + internal struct DEVPROPKEY + { + public Guid fmtid; + public ulong pid; + } - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - internal struct SP_DEVICE_INTERFACE_DETAIL_DATA - { - internal int Size; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - internal string DevicePath; - } + internal static DEVPROPKEY DEVPKEY_Device_BusReportedDeviceDesc = + new DEVPROPKEY { fmtid = new Guid(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2), pid = 4 }; - [StructLayout(LayoutKind.Sequential)] - internal struct DEVPROPKEY - { - public Guid fmtid; - public ulong pid; - } + [DllImport("setupapi.dll", EntryPoint = "SetupDiGetDeviceRegistryProperty")] + public static extern bool SetupDiGetDeviceRegistryProperty(IntPtr deviceInfoSet, ref SP_DEVINFO_DATA deviceInfoData, int propertyVal, ref int propertyRegDataType, byte[] propertyBuffer, int propertyBufferSize, ref int requiredSize); - internal static DEVPROPKEY DEVPKEY_Device_BusReportedDeviceDesc = - new DEVPROPKEY { fmtid = new Guid(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2), pid = 4 }; + [DllImport("setupapi.dll", EntryPoint = "SetupDiGetDevicePropertyW", SetLastError = true)] + public static extern bool SetupDiGetDeviceProperty(IntPtr deviceInfo, ref SP_DEVINFO_DATA deviceInfoData, ref DEVPROPKEY propkey, ref ulong propertyDataType, byte[] propertyBuffer, int propertyBufferSize, ref int requiredSize, uint flags); - [DllImport("setupapi.dll", EntryPoint = "SetupDiGetDeviceRegistryProperty")] - public static extern bool SetupDiGetDeviceRegistryProperty(IntPtr deviceInfoSet, ref SP_DEVINFO_DATA deviceInfoData, int propertyVal, ref int propertyRegDataType, byte[] propertyBuffer, int propertyBufferSize, ref int requiredSize); + [DllImport("setupapi.dll")] + static internal extern bool SetupDiEnumDeviceInfo(IntPtr deviceInfoSet, int memberIndex, ref SP_DEVINFO_DATA deviceInfoData); - [DllImport("setupapi.dll", EntryPoint = "SetupDiGetDevicePropertyW", SetLastError = true)] - public static extern bool SetupDiGetDeviceProperty(IntPtr deviceInfo, ref SP_DEVINFO_DATA deviceInfoData, ref DEVPROPKEY propkey, ref ulong propertyDataType, byte[] propertyBuffer, int propertyBufferSize, ref int requiredSize, uint flags); + [DllImport("user32.dll", CharSet = CharSet.Auto)] + static internal extern IntPtr RegisterDeviceNotification(IntPtr hRecipient, IntPtr notificationFilter, Int32 flags); - [DllImport("setupapi.dll")] - static internal extern bool SetupDiEnumDeviceInfo(IntPtr deviceInfoSet, int memberIndex, ref SP_DEVINFO_DATA deviceInfoData); + [DllImport("setupapi.dll")] + internal static extern int SetupDiCreateDeviceInfoList(ref Guid classGuid, int hwndParent); - [DllImport("user32.dll", CharSet = CharSet.Auto)] - static internal extern IntPtr RegisterDeviceNotification(IntPtr hRecipient, IntPtr notificationFilter, Int32 flags); + [DllImport("setupapi.dll")] + static internal extern int SetupDiDestroyDeviceInfoList(IntPtr deviceInfoSet); - [DllImport("setupapi.dll")] - internal static extern int SetupDiCreateDeviceInfoList(ref Guid classGuid, int hwndParent); + [DllImport("setupapi.dll")] + static internal extern bool SetupDiEnumDeviceInterfaces(IntPtr deviceInfoSet, ref SP_DEVINFO_DATA deviceInfoData, ref Guid interfaceClassGuid, int memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData); - [DllImport("setupapi.dll")] - static internal extern int SetupDiDestroyDeviceInfoList(IntPtr deviceInfoSet); + [DllImport("setupapi.dll", CharSet = CharSet.Auto)] + static internal extern IntPtr SetupDiGetClassDevs(ref System.Guid classGuid, string enumerator, int hwndParent, int flags); - [DllImport("setupapi.dll", CharSet = CharSet.Auto)] - static internal extern bool SetupDiSetClassInstallParams(IntPtr deviceInfoSet, ref SP_DEVINFO_DATA deviceInfoData, ref SP_PROPCHANGE_PARAMS classInstallParams, int classInstallParamsSize); + [DllImport("setupapi.dll", CharSet = CharSet.Auto, EntryPoint = "SetupDiGetDeviceInterfaceDetail")] + static internal extern bool SetupDiGetDeviceInterfaceDetailBuffer(IntPtr deviceInfoSet, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData, IntPtr deviceInterfaceDetailData, int deviceInterfaceDetailDataSize, ref int requiredSize, IntPtr deviceInfoData); - [DllImport("setupapi.dll", CharSet = CharSet.Auto)] - static internal extern bool SetupDiCallClassInstaller(int installFunction, IntPtr deviceInfoSet, ref SP_DEVINFO_DATA deviceInfoData); + [DllImport("setupapi.dll", CharSet = CharSet.Auto)] + static internal extern bool SetupDiGetDeviceInterfaceDetail(IntPtr deviceInfoSet, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData, ref SP_DEVICE_INTERFACE_DETAIL_DATA deviceInterfaceDetailData, int deviceInterfaceDetailDataSize, ref int requiredSize, IntPtr deviceInfoData); - [DllImport("setupapi.dll")] - static internal extern bool SetupDiEnumDeviceInterfaces(IntPtr deviceInfoSet, ref SP_DEVINFO_DATA deviceInfoData, ref Guid interfaceClassGuid, int memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData); + [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] + static internal extern bool SetupDiGetDeviceInstanceId(IntPtr DeviceInfoSet, ref SP_DEVINFO_DATA DeviceInfoData, [Out] char[] DeviceInstanceId, int DeviceInstanceIdSize, out int RequiredSize); - [DllImport("setupapi.dll", CharSet = CharSet.Auto)] - static internal extern IntPtr SetupDiGetClassDevs(ref System.Guid classGuid, string enumerator, int hwndParent, int flags); + [DllImport("user32.dll")] + static internal extern bool UnregisterDeviceNotification(IntPtr handle); - [DllImport("setupapi.dll", CharSet = CharSet.Auto, EntryPoint = "SetupDiGetDeviceInterfaceDetail")] - static internal extern bool SetupDiGetDeviceInterfaceDetailBuffer(IntPtr deviceInfoSet, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData, IntPtr deviceInterfaceDetailData, int deviceInterfaceDetailDataSize, ref int requiredSize, IntPtr deviceInfoData); + internal const short HIDP_INPUT = 0; + internal const short HIDP_OUTPUT = 1; - [DllImport("setupapi.dll", CharSet = CharSet.Auto)] - static internal extern bool SetupDiGetDeviceInterfaceDetail(IntPtr deviceInfoSet, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData, ref SP_DEVICE_INTERFACE_DETAIL_DATA deviceInterfaceDetailData, int deviceInterfaceDetailDataSize, ref int requiredSize, IntPtr deviceInfoData); + internal const short HIDP_FEATURE = 2; + [StructLayout(LayoutKind.Sequential)] + internal struct HIDD_ATTRIBUTES + { + internal int Size; + internal ushort VendorID; + internal ushort ProductID; + internal short VersionNumber; + } - [DllImport("user32.dll")] - static internal extern bool UnregisterDeviceNotification(IntPtr handle); + [StructLayout(LayoutKind.Sequential)] + internal struct HIDP_CAPS + { + internal short Usage; + internal short UsagePage; + internal short InputReportByteLength; + internal short OutputReportByteLength; + internal short FeatureReportByteLength; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 17)] + internal short[] Reserved; + internal short NumberLinkCollectionNodes; + internal short NumberInputButtonCaps; + internal short NumberInputValueCaps; + internal short NumberInputDataIndices; + internal short NumberOutputButtonCaps; + internal short NumberOutputValueCaps; + internal short NumberOutputDataIndices; + internal short NumberFeatureButtonCaps; + internal short NumberFeatureValueCaps; + internal short NumberFeatureDataIndices; + } - internal const short HIDP_INPUT = 0; - internal const short HIDP_OUTPUT = 1; + [StructLayout(LayoutKind.Sequential)] + internal struct HIDP_VALUE_CAPS + { + internal short UsagePage; + internal byte ReportID; + internal int IsAlias; + internal short BitField; + internal short LinkCollection; + internal short LinkUsage; + internal short LinkUsagePage; + internal int IsRange; + internal int IsStringRange; + internal int IsDesignatorRange; + internal int IsAbsolute; + internal int HasNull; + internal byte Reserved; + internal short BitSize; + internal short ReportCount; + internal short Reserved2; + internal short Reserved3; + internal short Reserved4; + internal short Reserved5; + internal short Reserved6; + internal int LogicalMin; + internal int LogicalMax; + internal int PhysicalMin; + internal int PhysicalMax; + internal short UsageMin; + internal short UsageMax; + internal short StringMin; + internal short StringMax; + internal short DesignatorMin; + internal short DesignatorMax; + internal short DataIndexMin; + internal short DataIndexMax; + } - internal const short HIDP_FEATURE = 2; - [StructLayout(LayoutKind.Sequential)] - internal struct HIDD_ATTRIBUTES - { - internal int Size; - internal ushort VendorID; - internal ushort ProductID; - internal short VersionNumber; - } + [DllImport("hid.dll")] + static internal extern bool HidD_FlushQueue(IntPtr hidDeviceObject); - [StructLayout(LayoutKind.Sequential)] - internal struct HIDP_CAPS - { - internal short Usage; - internal short UsagePage; - internal short InputReportByteLength; - internal short OutputReportByteLength; - internal short FeatureReportByteLength; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 17)] - internal short[] Reserved; - internal short NumberLinkCollectionNodes; - internal short NumberInputButtonCaps; - internal short NumberInputValueCaps; - internal short NumberInputDataIndices; - internal short NumberOutputButtonCaps; - internal short NumberOutputValueCaps; - internal short NumberOutputDataIndices; - internal short NumberFeatureButtonCaps; - internal short NumberFeatureValueCaps; - internal short NumberFeatureDataIndices; - } + [DllImport("hid.dll")] + static internal extern bool HidD_GetAttributes(IntPtr hidDeviceObject, ref HIDD_ATTRIBUTES attributes); - [StructLayout(LayoutKind.Sequential)] - internal struct SP_CLASSINSTALL_HEADER - { - internal int cbSize; - internal int installFunction; - } + [DllImport("hid.dll")] + static internal extern bool HidD_GetFeature(IntPtr hidDeviceObject, byte[] lpReportBuffer, int reportBufferLength); - [StructLayout(LayoutKind.Sequential)] - internal struct SP_PROPCHANGE_PARAMS - { - internal SP_CLASSINSTALL_HEADER classInstallHeader; - internal int stateChange; - internal int scope; - internal int hwProfile; - } + [DllImport("hid.dll")] + static internal extern bool HidD_GetInputReport(IntPtr hidDeviceObject, byte[] lpReportBuffer, int reportBufferLength); - [StructLayout(LayoutKind.Sequential)] - internal struct HIDP_VALUE_CAPS - { - internal short UsagePage; - internal byte ReportID; - internal int IsAlias; - internal short BitField; - internal short LinkCollection; - internal short LinkUsage; - internal short LinkUsagePage; - internal int IsRange; - internal int IsStringRange; - internal int IsDesignatorRange; - internal int IsAbsolute; - internal int HasNull; - internal byte Reserved; - internal short BitSize; - internal short ReportCount; - internal short Reserved2; - internal short Reserved3; - internal short Reserved4; - internal short Reserved5; - internal short Reserved6; - internal int LogicalMin; - internal int LogicalMax; - internal int PhysicalMin; - internal int PhysicalMax; - internal short UsageMin; - internal short UsageMax; - internal short StringMin; - internal short StringMax; - internal short DesignatorMin; - internal short DesignatorMax; - internal short DataIndexMin; - internal short DataIndexMax; - } + [DllImport("hid.dll")] + static internal extern void HidD_GetHidGuid(ref Guid hidGuid); - [DllImport("hid.dll")] - static internal extern bool HidD_FlushQueue(IntPtr hidDeviceObject); + [DllImport("hid.dll")] + static internal extern bool HidD_GetNumInputBuffers(IntPtr hidDeviceObject, ref int numberBuffers); - [DllImport("hid.dll")] - static internal extern bool HidD_GetAttributes(IntPtr hidDeviceObject, ref HIDD_ATTRIBUTES attributes); + [DllImport("hid.dll")] + static internal extern bool HidD_GetPreparsedData(IntPtr hidDeviceObject, ref IntPtr preparsedData); - [DllImport("hid.dll")] - static internal extern bool HidD_GetFeature(IntPtr hidDeviceObject, byte[] lpReportBuffer, int reportBufferLength); + [DllImport("hid.dll")] + static internal extern bool HidD_FreePreparsedData(IntPtr preparsedData); - [DllImport("hid.dll")] - static internal extern bool HidD_GetInputReport(IntPtr hidDeviceObject, ref byte lpReportBuffer, int reportBufferLength); + [DllImport("hid.dll")] + static internal extern bool HidD_SetFeature(IntPtr hidDeviceObject, byte[] lpReportBuffer, int reportBufferLength); - [DllImport("hid.dll")] - static internal extern void HidD_GetHidGuid(ref Guid hidGuid); + [DllImport("hid.dll")] + static internal extern bool HidD_SetNumInputBuffers(IntPtr hidDeviceObject, int numberBuffers); - [DllImport("hid.dll")] - static internal extern bool HidD_GetNumInputBuffers(IntPtr hidDeviceObject, ref int numberBuffers); + [DllImport("hid.dll")] + static internal extern bool HidD_SetOutputReport(IntPtr hidDeviceObject, byte[] lpReportBuffer, int reportBufferLength); - [DllImport("hid.dll")] - static internal extern bool HidD_GetPreparsedData(IntPtr hidDeviceObject, ref IntPtr preparsedData); + [DllImport("hid.dll")] + static internal extern int HidP_GetCaps(IntPtr preparsedData, ref HIDP_CAPS capabilities); - [DllImport("hid.dll")] - static internal extern bool HidD_FreePreparsedData(IntPtr preparsedData); + [DllImport("hid.dll")] + static internal extern int HidP_GetValueCaps(short reportType, ref byte valueCaps, ref short valueCapsLength, IntPtr preparsedData); - [DllImport("hid.dll")] - static internal extern bool HidD_SetFeature(IntPtr hidDeviceObject, byte[] lpReportBuffer, int reportBufferLength); + [DllImport("hid.dll", CharSet = CharSet.Unicode)] + internal static extern bool HidD_GetProductString(IntPtr hidDeviceObject, ref byte lpReportBuffer, int ReportBufferLength); - [DllImport("hid.dll")] - static internal extern bool HidD_SetNumInputBuffers(IntPtr hidDeviceObject, int numberBuffers); + [DllImport("hid.dll", CharSet = CharSet.Unicode)] + internal static extern bool HidD_GetManufacturerString(IntPtr hidDeviceObject, ref byte lpReportBuffer, int ReportBufferLength); - [DllImport("hid.dll")] - static internal extern bool HidD_SetOutputReport(IntPtr hidDeviceObject, byte[] lpReportBuffer, int reportBufferLength); - - [DllImport("hid.dll")] - static internal extern int HidP_GetCaps(IntPtr preparsedData, ref HIDP_CAPS capabilities); - - [DllImport("hid.dll")] - static internal extern int HidP_GetValueCaps(short reportType, ref byte valueCaps, ref short valueCapsLength, IntPtr preparsedData); - - [DllImport("hid.dll", CharSet = CharSet.Unicode)] - internal static extern bool HidD_GetProductString(IntPtr hidDeviceObject, ref byte lpReportBuffer, int ReportBufferLength); - - [DllImport("hid.dll", CharSet = CharSet.Unicode)] - internal static extern bool HidD_GetManufacturerString(IntPtr hidDeviceObject, ref byte lpReportBuffer, int ReportBufferLength); - - [DllImport("hid.dll", CharSet = CharSet.Unicode)] - internal static extern bool HidD_GetSerialNumberString(IntPtr hidDeviceObject, ref byte lpReportBuffer, int reportBufferLength); - } + [DllImport("hid.dll", CharSet = CharSet.Unicode)] + internal static extern bool HidD_GetSerialNumberString(IntPtr hidDeviceObject, ref byte lpReportBuffer, int reportBufferLength); + } } diff --git a/MiController/MiApplicationContext .cs b/MiController/MiApplicationContext .cs index 5450b32..f710348 100644 --- a/MiController/MiApplicationContext .cs +++ b/MiController/MiApplicationContext .cs @@ -1,25 +1,26 @@ using MiController.Properties; using System; -using System.ComponentModel; using System.Drawing; -using System.Globalization; using System.Windows.Forms; +using MiController.Win32; +using Nefarius.ViGEm.Client.Exceptions; namespace MiController { public class MiApplicationContext : ApplicationContext { private readonly NotifyIcon _trayIcon; - private BackgroundWorker _backgroundWorker; private ContextMenuStrip _contextMenuStrip; - private ToolStripMenuItem _connectToolStripMenuItem; - private ToolStripMenuItem _disconnectToolStripMenuItem; private ToolStripMenuItem _statusToolStripMenuItem; + private const string XIAOMI_GAMEPAD_HARDWARE_FILTER = @"VID&00022717_PID&3144"; + private XInputManager _manager; + private HidMonitor _monitor; public MiApplicationContext() { - InitBackgroundWorker(); + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; InitContextMenu(); - + InitGamepad(); + StartGamePad(); // Initialize Tray Icon _trayIcon = new NotifyIcon { @@ -29,69 +30,33 @@ namespace MiController }; } + private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs args) + { + var message = args.ExceptionObject is Exception exception ? exception.Message : args.ExceptionObject.ToString(); + _statusToolStripMenuItem.Text = $"Error: {message}"; + } + private void exitToolStripMenuItem_Click(object sender, EventArgs e) { - _backgroundWorker.CancelAsync(); _trayIcon.Visible = false; - + _monitor.Stop(); Application.Exit(); } - private void connectToolStripMenuItem_Click(object sender, EventArgs e) - { - StartStopProcess(true); - _backgroundWorker.RunWorkerAsync(); - } - private void disconnectToolStripMenuItem_Click(object sender, EventArgs e) - { - _backgroundWorker.CancelAsync(); - } - - private void InitBackgroundWorker() - { - _backgroundWorker = new BackgroundWorker {WorkerReportsProgress = true, WorkerSupportsCancellation = true}; - _backgroundWorker.DoWork += backgroundWorker_DoWork; - _backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged; - _backgroundWorker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted; - } - private void StartStopProcess(bool start) { - _connectToolStripMenuItem.Enabled = !start; - _disconnectToolStripMenuItem.Enabled = start; + _statusToolStripMenuItem.Image = start ? Resources.ConnectPlugged : Resources.ConnectUnplugged; _trayIcon.Icon = start ? Resources.MiLogo : Resources.MiLogoGrey; } private void InitContextMenu() { - _connectToolStripMenuItem = new ToolStripMenuItem - { - Name = "connectToolStripMenuItem", - Size = new Size(180, 22), - Text = "Connect", - Image = Resources.ConnectPlugged, - ImageTransparentColor = Color.Magenta - }; - _connectToolStripMenuItem.Click += connectToolStripMenuItem_Click; - - _disconnectToolStripMenuItem = new ToolStripMenuItem - { - Name = "disconnectToolStripMenuItem", - Size = new Size(180, 22), - Text = "Disconnect", - Image = Resources.ConnectUnplugged, - ImageTransparentColor = Color.Magenta, - Enabled = false - }; - _disconnectToolStripMenuItem.Click += disconnectToolStripMenuItem_Click; - var toolStripSeparator1 = new ToolStripSeparator { Name = "toolStripSeparator1", Size = new Size(322, 6) }; - _statusToolStripMenuItem = new ToolStripMenuItem { Name = "statusToolStripMenuItem", Size = new Size(180, 22), Text = "ready", - Enabled = false + Enabled = true }; var toolStripSeparator2 = new ToolStripSeparator { Name = "toolStripSeparator2", Size = new Size(322, 6) }; @@ -107,58 +72,57 @@ namespace MiController exitToolStripMenuItem.Click += exitToolStripMenuItem_Click; _contextMenuStrip = new ContextMenuStrip { Renderer = new NoHighlightRenderer() }; - _contextMenuStrip.Items.Add(_connectToolStripMenuItem); - _contextMenuStrip.Items.Add(_disconnectToolStripMenuItem); - _contextMenuStrip.Items.Add(toolStripSeparator1); _contextMenuStrip.Items.Add(_statusToolStripMenuItem); _contextMenuStrip.Items.Add(toolStripSeparator2); _contextMenuStrip.Items.Add(exitToolStripMenuItem); } - private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) + + private void Manager_GamepadRunning(object sender, EventArgs eventArgs) { - var bw = sender as BackgroundWorker; - - ControllerHelper.Run(bw); - - if (bw != null) - { - if (bw.CancellationPending) - { - e.Cancel = true; - } - } + _statusToolStripMenuItem.Text = "Gamepad connected"; + StartStopProcess(true); } - private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + private void Manager_GamepadRemoved(object sender, EventArgs eventArgs) { - if (e.Cancelled) - { - _statusToolStripMenuItem.Text = "disconnected"; - } - else if (e.Error != null) - { - string msg = String.Format(CultureInfo.InvariantCulture, "An error occurred: {0}", e.Error.Message); - _statusToolStripMenuItem.Text = msg; - } + _statusToolStripMenuItem.Text = "Gamepad disconnected"; StartStopProcess(false); } - private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) + private void Monitor_DeviceAttached(object sender, DeviceEventArgs e) { - _statusToolStripMenuItem.Text = (string)e.UserState; + //_statusToolStripMenuItem.Text = $"New HID device connected: {e.Description} {e.Path}"; + _manager.AddAndStart(e.Path, e.InstanceId); } - } - - internal class NoHighlightRenderer : ToolStripProfessionalRenderer - { - protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) + private void Monitor_DeviceRemoved(object sender, DeviceEventArgs e) { - if (e.Item.Enabled) + //_statusToolStripMenuItem.Text = $"HID device disconnected: {e.Description} {e.Path}"; + _manager.StopAndRemove(e.Path); + } + + private void InitGamepad() + { + try { - base.OnRenderMenuItemBackground(e); + _manager = new XInputManager(); + _manager.GamepadRunning += Manager_GamepadRunning; + _manager.GamepadRemoved += Manager_GamepadRemoved; } + catch (VigemBusNotFoundException ex) + { + throw new ApplicationException("ViGEm Bus not found. Please make sure that is installed correctly", ex); + } + + _monitor = new HidMonitor(XIAOMI_GAMEPAD_HARDWARE_FILTER); + _monitor.DeviceAttached += Monitor_DeviceAttached; + _monitor.DeviceRemoved += Monitor_DeviceRemoved; + } + + private void StartGamePad() + { + _monitor.Start(); } } } diff --git a/MiController/MiController.csproj b/MiController/MiController.csproj index 8491878..59b229f 100644 --- a/MiController/MiController.csproj +++ b/MiController/MiController.csproj @@ -8,7 +8,7 @@ WinExe MiController MiController - v4.7.2 + v4.8 512 true true @@ -27,9 +27,10 @@ false false true + - x64 + AnyCPU true full false @@ -37,6 +38,7 @@ DEBUG;TRACE prompt 4 + false x64 @@ -51,7 +53,7 @@ MiLogo.ico - true + false MiControllerKey.snk @@ -60,6 +62,9 @@ app.manifest + + ..\packages\Nefarius.ViGEm.Client.1.17.178\lib\net452\Nefarius.ViGEm.Client.dll + @@ -74,8 +79,6 @@ - - @@ -85,18 +88,24 @@ + - + - - - + + + + + + + + ResXFileCodeGenerator @@ -108,8 +117,10 @@ Resources.resx True + + SettingsSingleFileGenerator Settings.Designer.cs @@ -120,21 +131,6 @@ True - - Always - - - Always - - - Always - - - Always - - - Always - @@ -164,11 +160,6 @@ - - - Always - - "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "$(ProjectDir)Setup.iss" diff --git a/MiController/NoHighlightRenderer.cs b/MiController/NoHighlightRenderer.cs new file mode 100644 index 0000000..a1ad83b --- /dev/null +++ b/MiController/NoHighlightRenderer.cs @@ -0,0 +1,15 @@ +using System.Windows.Forms; + +namespace MiController +{ + internal class NoHighlightRenderer : ToolStripProfessionalRenderer + { + protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) + { + if (e.Item.Enabled) + { + base.OnRenderMenuItemBackground(e); + } + } + } +} \ No newline at end of file diff --git a/MiController/Program.cs b/MiController/Program.cs index 8e469cb..f3e428e 100644 --- a/MiController/Program.cs +++ b/MiController/Program.cs @@ -9,24 +9,8 @@ namespace MiController /// The main entry point for the application. /// [STAThread] - static void Main(string[] args) + static void Main() { - if (args.Length > 0) - { - string cmd = args[0].ToLowerInvariant(); - if (cmd == "/install") - { - DriverSetup.Uninstall(); - DriverSetup.Install(); - } - else if (cmd == "/uninstall") - { - DriverSetup.Uninstall(); - return; - } - } - - Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MiApplicationContext()); diff --git a/MiController/Properties/AssemblyInfo.cs b/MiController/Properties/AssemblyInfo.cs index d8ca80d..496d851 100644 --- a/MiController/Properties/AssemblyInfo.cs +++ b/MiController/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following @@ -10,7 +9,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("TomaSoft")] [assembly: AssemblyProduct("MiController")] -[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyCopyright("Copyright © 2022")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.1.0.0")] +[assembly: AssemblyFileVersion("1.1.0.0")] diff --git a/MiController/Properties/Resources.Designer.cs b/MiController/Properties/Resources.Designer.cs index f3b5874..ad9c253 100644 --- a/MiController/Properties/Resources.Designer.cs +++ b/MiController/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace MiController.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/MiController/Properties/Settings.Designer.cs b/MiController/Properties/Settings.Designer.cs index 371a25d..f2a1c35 100644 --- a/MiController/Properties/Settings.Designer.cs +++ b/MiController/Properties/Settings.Designer.cs @@ -8,21 +8,17 @@ // //------------------------------------------------------------------------------ -namespace MiController.Properties -{ - - +namespace MiController.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } diff --git a/MiController/ScpDriver/ScpVBus.cat b/MiController/ScpDriver/ScpVBus.cat deleted file mode 100644 index 895bd16891112a0e0179470afe45976dbbdab016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12385 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 Nx`kTqjXfW({U5R0xD)^Y diff --git a/MiController/ScpDriver/ScpVBus.inf b/MiController/ScpDriver/ScpVBus.inf deleted file mode 100644 index 18a4df4..0000000 --- a/MiController/ScpDriver/ScpVBus.inf +++ /dev/null @@ -1,71 +0,0 @@ -; ============================================================================= -; Copyright (c) Scarlet.Crush Productions. All rights reserved. -; -; ScpVBus.inf -; ============================================================================= - -[Version] -Provider = %SCProd% -Signature = "$Windows NT$" -Class = System -ClassGuid = {4D36E97D-E325-11CE-BFC1-08002BE10318} -DriverVer = 05/05/2013, 1.0.0.103 -CatalogFile = ScpVBus.cat - -; ============================================================================= - -[DestinationDirs] -DefaultDestDir = 12 - -[Manufacturer] -%SCProd% = SCProductions, NTx86, NTamd64 - -[SourceDisksNames] -1 = %MediaDescription% - -[SCProductions.NTx86] -%ScpVBus.DeviceDesc% = ScpVBus_Install, root\ScpVBus - -[SourceDisksFiles.x86] -ScpVBus.sys = 1, .\x86, - -[SCProductions.NTamd64] -%ScpVBus.DeviceDesc% = ScpVBus_Install, root\ScpVBus - -[SourceDisksFiles.amd64] -ScpVBus.sys = 1, .\amd64, - -; ============================================================================= - -[ScpVBus_Install.NT] -CopyFiles = ScpVBus_Install.NT.Copy - -[ScpVBus_Install.NT.hw] -AddReg = ScpVBus_Device_AddReg - -[ScpVBus_Install.NT.Copy] -ScpVBus.sys - -[ScpVBus_Device_AddReg] - -[ScpVBus_Install.NT.Services] -AddService = ScpVBus, %SPSVCINST_ASSOCSERVICE%, ScpVBus_Service_Inst - -[ScpVBus_Service_Inst] -DisplayName = %ScpVBus.SVCDESC% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %12%\ScpVBus.sys -LoadOrderGroup = Extended Base - -; ============================================================================= - -[Strings] -SCProd = "Scarlet.Crush Productions" -MediaDescription = "Scp Virtual Bus Installation Media" -ScpVBus.DeviceDesc = "Scp Virtual Bus Driver" -ScpVBus.SVCDESC = "Scp Virtual Bus Driver" -SPSVCINST_ASSOCSERVICE = 0x00000002 - -; ============================================================================= diff --git a/MiController/ScpDriver/amd64/DIFxAPI.dll b/MiController/ScpDriver/amd64/DIFxAPI.dll deleted file mode 100644 index 76ccfd22cd7ea76b34f6744e5ea83baf3c80cde9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519048 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

9{}ReSA$s5ILf-dk`H%O# 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 diff --git a/MiController/ScpDriver/amd64/ScpVBus.sys b/MiController/ScpDriver/amd64/ScpVBus.sys deleted file mode 100644 index ae55f4174948e2846a6a0a5faca47f8d76003660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39168 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 DXVW#f diff --git a/MiController/ScpDriver/x86/DIFxAPI.dll b/MiController/ScpDriver/x86/DIFxAPI.dll deleted file mode 100644 index 9de2917b14e69946de3bef55f387e53689b41f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323464 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

cO2gd_?dt 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 OmHOBFl2={FV*dwAWhG+( diff --git a/MiController/ScpDriverInterface/ScpBus.cs b/MiController/ScpDriverInterface/ScpBus.cs deleted file mode 100644 index 57ad259..0000000 --- a/MiController/ScpDriverInterface/ScpBus.cs +++ /dev/null @@ -1,312 +0,0 @@ -/* - * ScpDriverInterface - by Mogzol (and of course Scarlet.Crush) - Jan, 2016 - * - * This is a simple little DLL which allows you to use Scarlet.Crush's SCP Virtual - * Bus Driver to emulate XBox 360 Controllers. - * - * Most of the code here has been ripped out of his ScpControl source code, mostly - * from the ScpDevice and BusDevice classes, so obviously credit and major props to - * Scarlet.Crush, without him this wouldn't be possible. You can download his - * original source code from here: - * http://forums.pcsx2.net/Thread-XInput-Wrapper-for-DS3-and-Play-com-USB-Dual-DS2-Controller - * - * Note that for this to work the SCP Virtual Bus Driver must be installed. (Duh) - */ - -using System; -using System.Globalization; -using System.IO; -using System.Runtime.InteropServices; -using Microsoft.Win32.SafeHandles; -[assembly: CLSCompliant(true)] - -namespace ScpDriverInterface -{ - ///

- /// Emulates XBox 360 controllers via Scarlet.Crush's SCP Virtual Bus Driver. - /// - public class ScpBus : IDisposable - { - private const string SCP_BUS_CLASS_GUID = "{F679F562-3164-42CE-A4DB-E7DDBE723909}"; - private const int ReportSize = 28; - - private readonly SafeFileHandle _deviceHandle; - - /// - /// Creates a new ScpBus object, which will then try to get a handle to the SCP Virtual Bus device. If it is unable to get the handle, an IOException will be thrown. - /// - public ScpBus() : this(0) { } - - /// - /// Creates a new ScpBus object, which will then try to get a handle to the SCP Virtual Bus device. If it is unable to get the handle, an IOException will be thrown. - /// - /// Specifies which SCP Virtual Bus device to use. This is 0-based. - public ScpBus(int instance) - { - string devicePath = ""; - - if (Find(new Guid(SCP_BUS_CLASS_GUID), ref devicePath, instance)) - { - _deviceHandle = GetHandle(devicePath); - } - else - { - throw new IOException("SCP Virtual Bus Device not found"); - } - } - - /// - /// Creates a new ScpBus object, which will then try to get a handle to the specified SCP Virtual Bus device. If it is unable to get the handle, an IOException will be thrown. - /// - /// The path to the SCP Virtual Bus device that you want to use. - public ScpBus(string devicePath) - { - _deviceHandle = GetHandle(devicePath); - } - - /// - /// Closes the handle to the SCP Virtual Bus device. Call this when you are done with your instance of ScpBus. - /// - /// (This method does the same thing as the Dispose() method. Use one or the other.) - /// - public void Close() - { - Dispose(); - } - - /// - /// Closes the handle to the SCP Virtual Bus device. Call this when you are done with your instance of ScpBus. - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - protected virtual void Dispose(bool disposing) - { - if (_deviceHandle != null && !_deviceHandle.IsInvalid) - { - _deviceHandle.Dispose(); - } - } - - /// - /// Plugs in an emulated XBox 360 controller. - /// - /// Used to identify the controller. Give each controller you plug in a different number. Number must be non-zero. - /// True if the operation was successful, false otherwise. - public bool PlugIn(int controllerNumber) - { - if (_deviceHandle.IsInvalid) - throw new ObjectDisposedException("SCP Virtual Bus device handle is closed"); - - int transfered = 0; - byte[] buffer = new byte[16]; - - buffer[0] = 0x10; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - - buffer[4] = (byte)((controllerNumber) & 0xFF); - buffer[5] = (byte)((controllerNumber >> 8) & 0xFF); - buffer[6] = (byte)((controllerNumber >> 16) & 0xFF); - buffer[7] = (byte)((controllerNumber >> 24) & 0xFF); - - return NativeMethods.DeviceIoControl(_deviceHandle, 0x2A4000, buffer, buffer.Length, null, 0, ref transfered, IntPtr.Zero); - } - - /// - /// Unplugs an emulated XBox 360 controller. - /// - /// The controller you want to unplug. - /// True if the operation was successful, false otherwise. - public bool Unplug(int controllerNumber) - { - if (_deviceHandle.IsInvalid) - throw new ObjectDisposedException("SCP Virtual Bus device handle is closed"); - - int transfered = 0; - byte[] buffer = new Byte[16]; - - buffer[0] = 0x10; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - - buffer[4] = (byte)((controllerNumber) & 0xFF); - buffer[5] = (byte)((controllerNumber >> 8) & 0xFF); - buffer[6] = (byte)((controllerNumber >> 16) & 0xFF); - buffer[7] = (byte)((controllerNumber >> 24) & 0xFF); - - return NativeMethods.DeviceIoControl(_deviceHandle, 0x2A4004, buffer, buffer.Length, null, 0, ref transfered, IntPtr.Zero); - } - - /// - /// Unplugs all emulated XBox 360 controllers. - /// - /// True if the operation was successful, false otherwise. - public bool UnplugAll() - { - if (_deviceHandle.IsInvalid) - throw new ObjectDisposedException("SCP Virtual Bus device handle is closed"); - - int transfered = 0; - byte[] buffer = new byte[16]; - - buffer[0] = 0x10; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - - return NativeMethods.DeviceIoControl(_deviceHandle, 0x2A4004, buffer, buffer.Length, null, 0, ref transfered, IntPtr.Zero); - } - - /// - /// Sends an input report for the current state of the specified emulated XBox 360 controller. Note: Only use this if you don't care about rumble data, otherwise use the 3-parameter version of Report(). - /// - /// The controller to report. - /// The controller report. If using the included X360Controller class, this can be generated with the GetReport() method. Otherwise see http://free60.org/wiki/GamePad#Input_report for details. - /// True if the operation was successful, false otherwise. - public bool Report(int controllerNumber, byte[] controllerReport) - { - return Report(controllerNumber, controllerReport, null); - } - - /// - /// Sends an input report for the current state of the specified emulated XBox 360 controller. If you care about rumble data, make sure you check the output report for rumble data every time you call this. - /// - /// The controller to report. - /// The controller report. If using the included X360Controller class, this can be generated with the GetReport() method. Otherwise see http://free60.org/wiki/GamePad#Input_report for details. - /// The buffer for the output report, which takes the form specified here: http://free60.org/wiki/GamePad#Output_report. Use an 8-byte buffer if you care about rumble data, or null otherwise. - /// True if the operation was successful, false otherwise. - public bool Report(int controllerNumber, byte[] controllerReport, byte[] outputBuffer) - { - if (_deviceHandle.IsInvalid) - throw new ObjectDisposedException("SCP Virtual Bus device handle is closed"); - - byte[] head = new byte[8]; - - head[0] = 0x1C; - head[4] = (byte)((controllerNumber) & 0xFF); - head[5] = (byte)((controllerNumber >> 8) & 0xFF); - head[6] = (byte)((controllerNumber >> 16) & 0xFF); - head[7] = (byte)((controllerNumber >> 24) & 0xFF); - - byte[] fullReport = new byte[28]; - - Buffer.BlockCopy(head, 0, fullReport, 0, head.Length); - Buffer.BlockCopy(controllerReport, 0, fullReport, head.Length, controllerReport.Length); - - int transferred = 0; - return NativeMethods.DeviceIoControl(_deviceHandle, 0x2A400C, fullReport, fullReport.Length, outputBuffer, outputBuffer?.Length ?? 0, ref transferred, IntPtr.Zero) && transferred > 0; - } - - private static bool Find(Guid target, ref string path, int instance = 0) - { - IntPtr detailDataBuffer = IntPtr.Zero; - IntPtr deviceInfoSet = IntPtr.Zero; - - try - { - NativeMethods.SP_DEVICE_INTERFACE_DATA DeviceInterfaceData = new NativeMethods.SP_DEVICE_INTERFACE_DATA(), da = new NativeMethods.SP_DEVICE_INTERFACE_DATA(); - int bufferSize = 0, memberIndex = 0; - - deviceInfoSet = NativeMethods.SetupDiGetClassDevs(ref target, IntPtr.Zero, IntPtr.Zero, NativeMethods.DIGCF_PRESENT | NativeMethods.DIGCF_DEVICEINTERFACE); - - DeviceInterfaceData.cbSize = da.cbSize = Marshal.SizeOf(DeviceInterfaceData); - - while (NativeMethods.SetupDiEnumDeviceInterfaces(deviceInfoSet, IntPtr.Zero, ref target, memberIndex, ref DeviceInterfaceData)) - { - NativeMethods.SetupDiGetDeviceInterfaceDetail(deviceInfoSet, ref DeviceInterfaceData, IntPtr.Zero, 0, ref bufferSize, ref da); - detailDataBuffer = Marshal.AllocHGlobal(bufferSize); - - Marshal.WriteInt32(detailDataBuffer, (IntPtr.Size == 4) ? (4 + Marshal.SystemDefaultCharSize) : 8); - - if (NativeMethods.SetupDiGetDeviceInterfaceDetail(deviceInfoSet, ref DeviceInterfaceData, detailDataBuffer, bufferSize, ref bufferSize, ref da)) - { - IntPtr pDevicePathName = detailDataBuffer + 4; - - path = Marshal.PtrToStringAuto(pDevicePathName).ToUpper(CultureInfo.InvariantCulture); - Marshal.FreeHGlobal(detailDataBuffer); - - if (memberIndex == instance) return true; - } - else Marshal.FreeHGlobal(detailDataBuffer); - - - memberIndex++; - } - } - finally - { - if (deviceInfoSet != IntPtr.Zero) - { - NativeMethods.SetupDiDestroyDeviceInfoList(deviceInfoSet); - } - } - - return false; - } - - private static SafeFileHandle GetHandle(string devicePath) - { - devicePath = devicePath.ToUpper(CultureInfo.InvariantCulture); - - SafeFileHandle handle = NativeMethods.CreateFile(devicePath, (NativeMethods.GENERIC_WRITE | NativeMethods.GENERIC_READ), NativeMethods.FILE_SHARE_READ | NativeMethods.FILE_SHARE_WRITE, IntPtr.Zero, NativeMethods.OPEN_EXISTING, NativeMethods.FILE_ATTRIBUTE_NORMAL | NativeMethods.FILE_FLAG_OVERLAPPED, UIntPtr.Zero); - - if (handle == null || handle.IsInvalid) - { - throw new IOException("Unable to get SCP Virtual Bus Device handle"); - } - - return handle; - } - } - - internal static class NativeMethods - { - [StructLayout(LayoutKind.Sequential)] - internal struct SP_DEVICE_INTERFACE_DATA - { - internal int cbSize; - internal Guid InterfaceClassGuid; - internal int Flags; - internal IntPtr Reserved; - } - - internal const uint FILE_ATTRIBUTE_NORMAL = 0x80; - internal const uint FILE_FLAG_OVERLAPPED = 0x40000000; - internal const uint FILE_SHARE_READ = 1; - internal const uint FILE_SHARE_WRITE = 2; - internal const uint GENERIC_READ = 0x80000000; - internal const uint GENERIC_WRITE = 0x40000000; - internal const uint OPEN_EXISTING = 3; - internal const int DIGCF_PRESENT = 0x0002; - internal const int DIGCF_DEVICEINTERFACE = 0x0010; - - [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] - internal static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, UIntPtr hTemplateFile); - - [DllImport("kernel32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - internal static extern bool DeviceIoControl(SafeFileHandle hDevice, int dwIoControlCode, byte[] lpInBuffer, int nInBufferSize, byte[] lpOutBuffer, int nOutBufferSize, ref int lpBytesReturned, IntPtr lpOverlapped); - - [DllImport("setupapi.dll", SetLastError = true)] - internal static extern int SetupDiDestroyDeviceInfoList(IntPtr deviceInfoSet); - - [DllImport("setupapi.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - internal static extern bool SetupDiEnumDeviceInterfaces(IntPtr hDevInfo, IntPtr devInfo, ref Guid interfaceClassGuid, int memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - internal static extern IntPtr SetupDiGetClassDevs(ref Guid classGuid, IntPtr enumerator, IntPtr hwndParent, int flags); - - [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] - [return: MarshalAs(UnmanagedType.Bool)] - internal static extern bool SetupDiGetDeviceInterfaceDetail(IntPtr hDevInfo, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData, IntPtr deviceInterfaceDetailData, int deviceInterfaceDetailDataSize, ref int requiredSize, ref SP_DEVICE_INTERFACE_DATA deviceInfoData); - } -} - - diff --git a/MiController/ScpDriverInterface/X360Controller.cs b/MiController/ScpDriverInterface/X360Controller.cs deleted file mode 100644 index 193627a..0000000 --- a/MiController/ScpDriverInterface/X360Controller.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System; - -namespace ScpDriverInterface -{ - /// - /// A virtual XBox 360 Controller. After setting the desired values, use the GetReport() method to generate a controller report that can be used with ScpBus's Report() method. - /// - public class X360Controller - { - /// - /// Generates a new X360Controller object with the default initial state (no buttons pressed, all analog inputs 0). - /// - public X360Controller() - { - Buttons = X360Buttons.None; - LeftTrigger = 0; - RightTrigger = 0; - LeftStickX = 0; - LeftStickY = 0; - RightStickX = 0; - RightStickY = 0; - } - - /// - /// Generates a new X360Controller object. Optionally, you can specify the initial state of the controller. - /// - /// The pressed buttons. Use like flags (i.e. (X360Buttons.A | X360Buttons.X) would be mean both A and X are pressed). - /// Left trigger analog input. 0 to 255. - /// Right trigger analog input. 0 to 255. - /// Left stick X-axis. -32,768 to 32,767. - /// Left stick Y-axis. -32,768 to 32,767. - /// Right stick X-axis. -32,768 to 32,767. - /// Right stick Y-axis. -32,768 to 32,767. - public X360Controller(X360Buttons buttons, byte leftTrigger, byte rightTrigger, short leftStickX, short leftStickY, short rightStickX, short rightStickY) - { - Buttons = buttons; - LeftTrigger = leftTrigger; - RightTrigger = rightTrigger; - LeftStickX = leftStickX; - LeftStickY = leftStickY; - RightStickX = rightStickX; - RightStickY = rightStickY; - } - - /// - /// Generates a new X360Controller object with the same values as the specified X360Controller object. - /// - /// An X360Controller object to copy values from. - public X360Controller(X360Controller controller) - { - Buttons = controller.Buttons; - LeftTrigger = controller.LeftTrigger; - RightTrigger = controller.RightTrigger; - LeftStickX = controller.LeftStickX; - LeftStickY = controller.LeftStickY; - RightStickX = controller.RightStickX; - RightStickY = controller.RightStickY; - } - - /// - /// The controller's currently pressed buttons. Use the X360Button values like flags (i.e. (X360Buttons.A | X360Buttons.X) would be mean both A and X are pressed). - /// - public X360Buttons Buttons { get; set; } - - /// - /// The controller's left trigger analog input. Value can range from 0 to 255. - /// - public byte LeftTrigger { get; set; } - - /// - /// The controller's right trigger analog input. Value can range from 0 to 255. - /// - public byte RightTrigger { get; set; } - - /// - /// The controller's left stick X-axis. Value can range from -32,768 to 32,767. - /// - public short LeftStickX { get; set; } - - /// - /// The controller's left stick Y-axis. Value can range from -32,768 to 32,767. - /// - public short LeftStickY { get; set; } - - /// - /// The controller's right stick X-axis. Value can range from -32,768 to 32,767. - /// - public short RightStickX { get; set; } - - /// - /// The controller's right stick Y-axis. Value can range from -32,768 to 32,767. - /// - public short RightStickY { get; set; } - - /// - /// Generates a XBox 360 controller report as specified here: http://free60.org/wiki/GamePad#Input_report. This can be used with ScpBus's Report() method. - /// - /// A 20-byte XBox 360 controller report. - public byte[] GetReport() - { - byte[] bytes = new byte[20]; - - bytes[0] = 0x00; // Message type (input report) - bytes[1] = 0x14; // Message size (20 bytes) - - bytes[2] = (byte)((ushort)Buttons & 0xFF); // Buttons low - bytes[3] = (byte)((ushort)Buttons >> 8 & 0xFF); // Buttons high - - bytes[4] = LeftTrigger; // Left trigger - bytes[5] = RightTrigger; // Right trigger - - bytes[6] = (byte)(LeftStickX & 0xFF); // Left stick X-axis low - bytes[7] = (byte)(LeftStickX >> 8 & 0xFF); // Left stick X-axis high - bytes[8] = (byte)(LeftStickY & 0xFF); // Left stick Y-axis low - bytes[9] = (byte)(LeftStickY >> 8 & 0xFF); // Left stick Y-axis high - - bytes[10] = (byte)(RightStickX & 0xFF); // Right stick X-axis low - bytes[11] = (byte)(RightStickX >> 8 & 0xFF); // Right stick X-axis high - bytes[12] = (byte)(RightStickY & 0xFF); // Right stick Y-axis low - bytes[13] = (byte)(RightStickY >> 8 & 0xFF); // Right stick Y-axis high - - // Remaining bytes are unused - - return bytes; - } - } - - /// - /// The buttons to be used with an X360Controller object. - /// - [Flags] - public enum X360Buttons - { - None = 0, - - Up = 1 << 0, - Down = 1 << 1, - Left = 1 << 2, - Right = 1 << 3, - - Start = 1 << 4, - Back = 1 << 5, - - LeftStick = 1 << 6, - RightStick = 1 << 7, - - LeftBumper = 1 << 8, - RightBumper = 1 << 9, - - Logo = 1 << 10, - - A = 1 << 12, - B = 1 << 13, - X = 1 << 14, - Y = 1 << 15, - } -} diff --git a/MiController/Setup.iss b/MiController/Setup.iss index a7051aa..38dca0f 100644 --- a/MiController/Setup.iss +++ b/MiController/Setup.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Mi Controller" -#define MyAppVersion "1.0" +#define MyAppVersion "1.1" #define MyAppPublisher "TomaSoft" #define MyAppExeName "MiController.exe" @@ -35,7 +35,6 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{ [Files] Source: ".\bin\Release\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion -Source: ".\bin\Release\ScpDriver\*"; DestDir: "{app}\ScpDriver"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files @@ -45,8 +44,6 @@ Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: de [Run] Filename: schtasks; Parameters: "/Create /SC ONLOGON /TN ""{#MyAppName}"" /TR ""{app}\{#MyAppExeName}"" /RL HIGHEST" ; Flags: nowait -Filename: "{app}\{#MyAppExeName}"; Parameters: "/install"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait skipifsilent [UninstallRun] -Filename: "{app}\{#MyAppExeName}"; Parameters: "/uninstall"; Filename: schtasks; Parameters: "/Delete /TN ""{#MyAppName}"" /F " diff --git a/MiController/Win32/DeviceEventArgs.cs b/MiController/Win32/DeviceEventArgs.cs new file mode 100644 index 0000000..6aec4a5 --- /dev/null +++ b/MiController/Win32/DeviceEventArgs.cs @@ -0,0 +1,19 @@ +using System; +using HidLibrary; + +namespace MiController.Win32 +{ + public class DeviceEventArgs : EventArgs + { + internal DeviceEventArgs(HidDevices.DeviceInfo info) + { + Path = info.Path; + Description = info.Description; + InstanceId = info.InstanceID; + } + + public string Path { get; set; } + public string Description { get; set; } + public string InstanceId { get; set; } + } +} \ No newline at end of file diff --git a/MiController/Win32/DeviceInfoEqualityComparer.cs b/MiController/Win32/DeviceInfoEqualityComparer.cs new file mode 100644 index 0000000..b921e61 --- /dev/null +++ b/MiController/Win32/DeviceInfoEqualityComparer.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using HidLibrary; + +namespace MiController.Win32 +{ + public class DeviceInfoEqualityComparer : IEqualityComparer + { + public bool Equals(HidDevices.DeviceInfo x, HidDevices.DeviceInfo y) => y != null && x != null && x.Path == y.Path; + public int GetHashCode(HidDevices.DeviceInfo di) => di.Path.GetHashCode(); + } +} \ No newline at end of file diff --git a/MiController/Win32/HidHide.cs b/MiController/Win32/HidHide.cs new file mode 100644 index 0000000..2f1d96c --- /dev/null +++ b/MiController/Win32/HidHide.cs @@ -0,0 +1,219 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using MiController.Win32.Native; +using Microsoft.Win32.SafeHandles; + +namespace MiController.Win32 +{ + public class HidHide : IDisposable + { + private const uint IOCTL_GET_WHITELIST = 0x80016000; + private const uint IOCTL_SET_WHITELIST = 0x80016004; + private const uint IOCTL_GET_BLACKLIST = 0x80016008; + private const uint IOCTL_SET_BLACKLIST = 0x8001600C; + private const uint IOCTL_GET_ACTIVE = 0x80016010; + private const uint IOCTL_SET_ACTIVE = 0x80016014; + + public HidHide() + { + Handle = Kernel32.CreateFile(@"\\.\HidHide", FileAccess.Read, FileShare.ReadWrite, IntPtr.Zero, + FileMode.Open, FileAttributes.Normal, IntPtr.Zero); + } + + private SafeFileHandle Handle { get; set; } + + public bool EnableHiding + { + get + { + var buffer = Marshal.AllocHGlobal(sizeof(bool)); + + try + { + Kernel32.DeviceIoControl( + Handle, IOCTL_GET_ACTIVE, + IntPtr.Zero, 0, // Input: none + buffer, 1, out _, // Output: buffer of length 1 + IntPtr.Zero + ); + + return Convert.ToBoolean(Marshal.ReadByte(buffer)); + } + finally + { + Marshal.FreeHGlobal(buffer); + } + } + + set + { + var buffer = Marshal.AllocHGlobal(sizeof(bool)); + + // Enable blocking logic, if not enabled already + try + { + Marshal.WriteByte(buffer, Convert.ToByte(value)); + + // Check return value for success + Kernel32.DeviceIoControl( + Handle, IOCTL_SET_ACTIVE, + buffer, sizeof(bool), // Input: 1 bool + IntPtr.Zero, 0, out _, // Output: ignored + IntPtr.Zero + ); + } + finally + { + Marshal.FreeHGlobal(buffer); + } + } + } + + public bool SetDeviceHideStatus(string instance, bool state) + { + var buffer = IntPtr.Zero; + + try + { + var blacklist = GetBlacklist(); + var newlist = state + ? blacklist.Concat(new[] { instance }).Distinct() + : blacklist.Where(e => e != instance).Distinct(); + + buffer = newlist.StringArrayToMultiSzPointer(out var length); + + // Submit new list + // Check return value for success + return Kernel32.DeviceIoControl( + Handle, IOCTL_SET_BLACKLIST, + buffer, length, + IntPtr.Zero, 0, out _, + IntPtr.Zero + ); + } + finally + { + Marshal.FreeHGlobal(buffer); + } + } + + public bool WhitelistCurrentApplication() + { + var buffer = IntPtr.Zero; + + // Manipulate allow-list and submit it + try + { + var appPath = Assembly.GetEntryAssembly()?.Location; + var dosPath = VolumeHelper.PathToDosDevicePath(appPath); + + var whitelist = GetWhitelist().ToArray(); + + if (whitelist.Contains(dosPath)) + return true; + + buffer = whitelist + .Concat(new[] { dosPath }) + .Distinct() + .StringArrayToMultiSzPointer(out var length); + + // Submit new list + // Check return value for success + return Kernel32.DeviceIoControl( + Handle, + IOCTL_SET_WHITELIST, + buffer, length, + IntPtr.Zero, 0, out _, + IntPtr.Zero + ); + } + finally + { + Marshal.FreeHGlobal(buffer); + } + } + + private IEnumerable GetBlacklist() + { + // List of blocked instances + var buffer = IntPtr.Zero; + + // Get existing list of blocked instances + // This is important to not discard entries other processes potentially made + // Always get the current list before altering/submitting it + try + { + // Get required buffer size + Kernel32.DeviceIoControl( + Handle, IOCTL_GET_BLACKLIST, + IntPtr.Zero, 0, // Input: none + IntPtr.Zero, 0, out var required, // Output: buffer size + IntPtr.Zero + ); + + buffer = Marshal.AllocHGlobal(required); + + // Get actual buffer content + Kernel32.DeviceIoControl( + Handle, IOCTL_GET_BLACKLIST, + IntPtr.Zero, 0, // Input: none + buffer, required, out _, // Output: buffer of known length + IntPtr.Zero + ); + + // Store existing block-list in a more manageable "C#" fashion + return buffer.MultiSzPointerToStringArray(required).ToList(); + } + finally + { + Marshal.FreeHGlobal(buffer); + } + } + + private IEnumerable GetWhitelist() + { + // List of blocked instances + var buffer = IntPtr.Zero; + + // Get existing list of blocked instances + // This is important to not discard entries other processes potentially made + // Always get the current list before altering/submitting it + try + { + // Get required buffer size + Kernel32.DeviceIoControl( + Handle, IOCTL_GET_WHITELIST, + IntPtr.Zero, 0, // Input: none + IntPtr.Zero, 0, out var required, // Output: buffer size + IntPtr.Zero + ); + + buffer = Marshal.AllocHGlobal(required); + + // Get actual buffer content + Kernel32.DeviceIoControl( + Handle, IOCTL_GET_WHITELIST, + IntPtr.Zero, 0, // Input: none + buffer, required, out _, // Output: buffer of known length + IntPtr.Zero + ); + + // Store existing block-list in a more manageable "C#" fashion + return buffer.MultiSzPointerToStringArray(required).ToList(); + } + finally + { + Marshal.FreeHGlobal(buffer); + } + } + + public void Dispose() + { + Handle.Dispose(); + } + } +} diff --git a/MiController/Win32/HidMonitor.cs b/MiController/Win32/HidMonitor.cs new file mode 100644 index 0000000..191fcec --- /dev/null +++ b/MiController/Win32/HidMonitor.cs @@ -0,0 +1,74 @@ +using System; +using System.Linq; +using System.Threading; +using HidLibrary; + +namespace MiController.Win32 +{ + public class HidMonitor + { + public event EventHandler DeviceAttached; + public event EventHandler DeviceRemoved; + private readonly Timer _monitorTimer; + private readonly string _filter; + private HidDevices.DeviceInfo[] _seenDevices; + + + public HidMonitor(string filter) + { + // Initializing HID device monitor with filter + _filter = filter; + _monitorTimer = new Timer(SearchForDevice); + _seenDevices = Array.Empty(); + } + + public void Start() + { + // Start monitoring for filter + _monitorTimer.Change(0, 5000); + } + + public void Stop() + { + // Stop monitoring for filter + _monitorTimer.Change(Timeout.Infinite, Timeout.Infinite); + } + + private void SearchForDevice(object state) + { + var filter = _filter.ToLower(); + var devices = HidDevices + .EnumerateDevices() + .Where(p => p.Path.ToLower().Contains(filter)) + .ToArray(); + + var comp = new DeviceInfoEqualityComparer(); + + // Get all the devices that has connected since the last check + var newDevices = devices.Except(_seenDevices, comp); + + // Get all the device that has disconnected since the last check + var removedDevices = _seenDevices.Except(devices, comp); + + foreach (var device in newDevices) + { + // Detected attached HID devices matching filter + DeviceAttached?.Invoke(this, new DeviceEventArgs(device)); + } + + foreach (var device in removedDevices) + { + // Detected removed HID devices matching filter + DeviceRemoved?.Invoke(this, new DeviceEventArgs(device)); + } + + _seenDevices = devices; + } + + public void Dispose() + { + // De-initilizing HID monitor + _monitorTimer.Dispose(); + } + } +} diff --git a/MiController/Win32/Native/Kernel32.cs b/MiController/Win32/Native/Kernel32.cs new file mode 100644 index 0000000..7ea9a05 --- /dev/null +++ b/MiController/Win32/Native/Kernel32.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; +using System.Runtime.InteropServices; +using Microsoft.Win32.SafeHandles; + +namespace MiController.Win32.Native +{ + public static class Kernel32 + { + [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] + public static extern SafeFileHandle CreateFile( + string lpFileName, + [MarshalAs(UnmanagedType.U4)] FileAccess dwDesiredAccess, + [MarshalAs(UnmanagedType.U4)] FileShare dwShareMode, + IntPtr lpSecurityAttributes, + [MarshalAs(UnmanagedType.U4)] FileMode dwCreationDisposition, + [MarshalAs(UnmanagedType.U4)] FileAttributes dwFlagsAndAttributes, + IntPtr hTemplateFile); + + [DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)] + public static extern bool DeviceIoControl( + SafeFileHandle hDevice, + uint dwIoControlCode, + IntPtr lpInBuffer, + int nInBufferSize, + IntPtr lpOutBuffer, + int nOutBufferSize, + out int lpBytesReturned, + IntPtr lpOverlapped); + } +} \ No newline at end of file diff --git a/MiController/Win32/VolumeHelper.cs b/MiController/Win32/VolumeHelper.cs new file mode 100644 index 0000000..2c037ce --- /dev/null +++ b/MiController/Win32/VolumeHelper.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace MiController.Win32 +{ + // Taken from https://vigem.org/projects/HidHide/API-Documentation/ + + /// + /// Path manipulation and volume helper methods. + /// + internal static class VolumeHelper + { + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool GetVolumePathNamesForVolumeNameW( + [MarshalAs(UnmanagedType.LPWStr)] string lpszVolumeName, + [MarshalAs(UnmanagedType.LPWStr)] [Out] + StringBuilder lpszVolumeNamePaths, uint cchBuferLength, + ref uint lpcchReturnLength); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr FindFirstVolume([Out] StringBuilder lpszVolumeName, + uint cchBufferLength); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool FindNextVolume(IntPtr hFindVolume, [Out] StringBuilder lpszVolumeName, + uint cchBufferLength); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern uint QueryDosDevice(string lpDeviceName, StringBuilder lpTargetPath, int ucchMax); + + private class VolumeMeta + { + public string DriveLetter { get; set; } + + public string VolumeName { get; set; } + + public string DevicePath { get; set; } + } + + /// + /// Curates and returns a collection of volume to path mappings. + /// + /// A collection of . + private static IEnumerable GetVolumeMappings() + { + var volumeName = new StringBuilder(ushort.MaxValue); + var pathName = new StringBuilder(ushort.MaxValue); + var mountPoint = new StringBuilder(ushort.MaxValue); + uint returnLength = 0; + + var volumeHandle = FindFirstVolume(volumeName, ushort.MaxValue); + + do + { + var volume = volumeName.ToString(); + + if (!GetVolumePathNamesForVolumeNameW(volume, mountPoint, ushort.MaxValue, ref returnLength)) + continue; + + // Extract volume name for use with QueryDosDevice + var deviceName = volume.Substring(4, volume.Length - 1 - 4); + + // Grab device path + returnLength = QueryDosDevice(deviceName, pathName, ushort.MaxValue); + + if (returnLength <= 0) + continue; + + yield return new VolumeMeta + { + DriveLetter = mountPoint.ToString(), + VolumeName = volume, + DevicePath = pathName.ToString() + }; + } while (FindNextVolume(volumeHandle, volumeName, ushort.MaxValue)); + } + + /// + /// Checks if a path is a junction point. + /// + /// A instance. + /// True if it's a junction, false otherwise. + private static bool IsPathReparsePoint(FileSystemInfo di) + { + return di.Attributes.HasFlag(FileAttributes.ReparsePoint); + } + + /// + /// Helper to make paths comparable. + /// + /// The source path. + /// The normalized path. + private static string NormalizePath(string path) + { + return Path.GetFullPath(new Uri(path).LocalPath) + .TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) + .ToUpperInvariant(); + } + + /// + /// Translates a user-land file path to "DOS device" path. + /// + /// The file path in normal namespace format. + /// The device namespace path (DOS device). + public static string PathToDosDevicePath(string path) + { + if (!File.Exists(path)) + throw new ArgumentException("The supplied file path doesn't exist", nameof(path)); + + var filePart = Path.GetFileName(path); + var pathPart = Path.GetDirectoryName(path); + + if (string.IsNullOrEmpty(pathPart)) + throw new IOException("Couldn't resolve directory"); + + var pathNoRoot = string.Empty; + var devicePath = string.Empty; + + // Walk up the directory tree to get the "deepest" potential junction + for (var current = new DirectoryInfo(pathPart); + current != null && current.Exists; + current = Directory.GetParent(current.FullName)) + { + if (!IsPathReparsePoint(current)) continue; + + devicePath = GetVolumeMappings().FirstOrDefault(m => + !string.IsNullOrEmpty(m.DriveLetter) && + NormalizePath(m.DriveLetter) == NormalizePath(current.FullName)) + ?.DevicePath; + + pathNoRoot = pathPart.Substring(current.FullName.Length); + + break; + } + + // No junctions found, translate original path + if (string.IsNullOrEmpty(devicePath)) + { + var driveLetter = Path.GetPathRoot(pathPart); + devicePath = GetVolumeMappings().FirstOrDefault(m => + m.DriveLetter.Equals(driveLetter, StringComparison.InvariantCultureIgnoreCase))?.DevicePath; + pathNoRoot = pathPart.Substring(Path.GetPathRoot(pathPart).Length); + } + + if (string.IsNullOrEmpty(devicePath)) + throw new IOException("Couldn't resolve device path"); + + var fullDevicePath = new StringBuilder(); + + // Build new DOS Device path + fullDevicePath.AppendFormat("{0}{1}", devicePath, Path.DirectorySeparatorChar); + fullDevicePath.Append(Path.Combine(pathNoRoot, filePart).TrimStart(Path.DirectorySeparatorChar)); + + return fullDevicePath.ToString(); + } + } +} diff --git a/MiController/Win32/WideStringHelper.cs b/MiController/Win32/WideStringHelper.cs new file mode 100644 index 0000000..37117d9 --- /dev/null +++ b/MiController/Win32/WideStringHelper.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace MiController.Win32 +{ + // Taken from https://vigem.org/projects/HidHide/API-Documentation/ + + /// + /// String manipulation helper methods. + /// + internal static class WideStringHelper + { + /// + /// Converts an array of into a double-null-terminated multi-byte character memory block. + /// + /// Source array of strings. + /// The length of the resulting byte array. + /// The allocated memory buffer. + public static IntPtr StringArrayToMultiSzPointer(this IEnumerable instances, out int length) + { + // Temporary byte array + IEnumerable multiSz = new List(); + + // Convert each string into wide multi-byte and add NULL-terminator in between + multiSz = instances.Aggregate(multiSz, + (current, entry) => current.Concat(Encoding.Unicode.GetBytes(entry)) + .Concat(Encoding.Unicode.GetBytes(new[] { char.MinValue }))); + + // Add another NULL-terminator to signal end of the list + multiSz = multiSz.Concat(Encoding.Unicode.GetBytes(new[] { char.MinValue })); + + // Convert expression to array + var multiSzArray = multiSz.ToArray(); + + // Convert array to managed native buffer + var buffer = Marshal.AllocHGlobal(multiSzArray.Length); + Marshal.Copy(multiSzArray, 0, buffer, multiSzArray.Length); + + length = multiSzArray.Length; + + // Return usable buffer, don't forget to free! + return buffer; + } + + /// + /// Converts a double-null-terminated multi-byte character memory block into a string array. + /// + /// The memory buffer. + /// The size in bytes of the memory buffer. + /// The extracted string array. + public static IEnumerable MultiSzPointerToStringArray(this IntPtr buffer, int length) + { + // Temporary byte array + var rawBuffer = new byte[length]; + + // Grab data from buffer + Marshal.Copy(buffer, rawBuffer, 0, length); + + // Trims away potential redundant NULL-characters and splits at NULL-terminator + return Encoding.Unicode.GetString(rawBuffer) + .TrimEnd(char.MinValue) + .Split(char.MinValue) + .Where(s => !String.IsNullOrWhiteSpace(s)); + } + } +} diff --git a/MiController/XInputManager.cs b/MiController/XInputManager.cs new file mode 100644 index 0000000..3ce470b --- /dev/null +++ b/MiController/XInputManager.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using MiController.Win32; +using Nefarius.ViGEm.Client; + + +namespace MiController +{ + public class XInputManager : IDisposable + { + public event EventHandler GamepadRunning; + public event EventHandler GamepadRemoved; + + private readonly Dictionary _gamepads; + private readonly ViGEmClient _viGEmClient; + + private readonly SynchronizationContext _syncContext; + + public XInputManager() + { + //Initializing ViGEm client + _viGEmClient = new ViGEmClient(); + _gamepads = new Dictionary(); + _syncContext = SynchronizationContext.Current; + } + + public void Dispose() + { + // Cleaning up running gamepads + + // When calling Stop() the device will get removed from the dictionary, do this to avoid exceptions in enumeration + var devices = _gamepads.Values.ToArray(); + + foreach (var device in devices) + { + StopAndRemove(device); + device.Dispose(); + } + + // Deinitializing ViGEm client + _viGEmClient.Dispose(); + } + + + public bool AddAndStart(string device, string instance) + { + if (Contains(device)) + { + // Requested addition of already existing device + return false; + } + + // Adding device + var gamepad = new XiaomiGamepad(device, instance, _viGEmClient); + if (_gamepads.ContainsKey(device)) + { + _gamepads[device].Dispose(); + _gamepads.Remove(device); + } + _gamepads.Add(device, gamepad); + + gamepad.Started += Gamepad_Started; + gamepad.Ended += Gamepad_Ended; + + // Hiding device instance + using (var hh = new HidHide()) + { + hh.SetDeviceHideStatus(gamepad.InstanceId, true); + } + + // Starting device + gamepad.Start(); + + return true; + } + + public void StopAndRemove(string device) + { + if (!Contains(device)) + { + // Requested removal of non-existing device + return; + } + var gamepad = _gamepads[device]; + StopAndRemove(gamepad); + } + + private void StopAndRemove(XiaomiGamepad gamepad) + { + // Stopping device + if (gamepad.IsActive) + { + gamepad.Stop(); + } + + gamepad.Started -= Gamepad_Started; + gamepad.Ended -= Gamepad_Ended; + + // Un-hiding device instance + using (var hh = new HidHide()) + { + hh.SetDeviceHideStatus(gamepad.InstanceId, false); + } + + // De-initializing and removing device + _gamepads.Remove(gamepad.Device.DevicePath); + gamepad.Dispose(); + } + + public bool Contains(string device) => _gamepads.ContainsKey(device); + + private void Gamepad_Ended(object sender, EventArgs eventArgs) + { + _syncContext.Post(o => + { + if (sender is XiaomiGamepad gamepad && !gamepad.CleanEnd) + { + StopAndRemove(gamepad); + } + + GamepadRemoved?.Invoke(this, EventArgs.Empty); + }, null); + } + + private void Gamepad_Started(object sender, EventArgs eventArgs) + { + _syncContext.Post(o => GamepadRunning?.Invoke(this, EventArgs.Empty), null); + } + } +} diff --git a/MiController/XiaomiGamepad.cs b/MiController/XiaomiGamepad.cs index 7ef2b9f..21f808e 100644 --- a/MiController/XiaomiGamepad.cs +++ b/MiController/XiaomiGamepad.cs @@ -1,200 +1,309 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Threading; using System.Threading.Tasks; using HidLibrary; -using ScpDriverInterface; -using System.Threading; -using System.Runtime.InteropServices; - +using Nefarius.ViGEm.Client; +using Nefarius.ViGEm.Client.Exceptions; +using Nefarius.ViGEm.Client.Targets; +using Nefarius.ViGEm.Client.Targets.Xbox360; namespace MiController { - public class XiaomiGamepad + public class XiaomiGamepad : IDisposable { - private byte[] Vibration = { 0x20, 0x00, 0x00 }; - private Mutex rumble_mutex = new Mutex(); + private static readonly Xbox360Button[][] HatSwitches = { + new [] { Xbox360Button.Up }, + new [] { Xbox360Button.Up, Xbox360Button.Right }, + new [] { Xbox360Button.Right }, + new [] { Xbox360Button.Right, Xbox360Button.Down }, + new [] { Xbox360Button.Down }, + new [] { Xbox360Button.Down, Xbox360Button.Left }, + new [] { Xbox360Button.Left }, + new [] { Xbox360Button.Left, Xbox360Button.Up }, + }; - public XiaomiGamepad(HidDevice Device, ScpBus scpBus, int index) + public event EventHandler Started; + public event EventHandler Ended; + + private readonly IXbox360Controller _target; + private readonly Thread _inputThread; + private readonly CancellationTokenSource _cts; + private readonly Timer _vibrationTimer; + private static readonly IHidEnumerator DeviceEnumerator = new HidFastReadEnumerator(); + + public XiaomiGamepad(string device, string instance, ViGEmClient client) { - Device.WriteFeatureData(Vibration); + Device = DeviceEnumerator.GetDevice(device) as HidFastReadDevice; + if (Device != null) + { + Device.MonitorDeviceEvents = false; + } - Thread rThread = new Thread(() => rumble_thread(Device)); - // rThread.Priority = ThreadPriority.BelowNormal; - rThread.Start(); + _target = client.CreateXbox360Controller(); + _target.AutoSubmitReport = false; + _target.FeedbackReceived += Target_OnFeedbackReceived; - Thread iThread = new Thread(() => input_thread(Device, scpBus, index)); - iThread.Priority = ThreadPriority.Highest; - iThread.Start(); + // TODO mark the threads as background? + _inputThread = new Thread(DeviceWorker); + + _cts = new CancellationTokenSource(); + _vibrationTimer = new Timer(VibrationTimer_Trigger); + + LedNumber = 0xFF; + InstanceId = instance; } - private void rumble_thread(HidDevice Device) + public HidFastReadDevice Device { get; } + + public ushort LedNumber { get; set; } + + public ushort BatteryLevel { get; private set; } + + public bool IsActive => _inputThread.IsAlive; + public bool CleanEnd => _cts.IsCancellationRequested; + + public bool ExclusiveMode { get; private set; } + + public string InstanceId { get; } + + public void Dispose() { - byte[] local_vibration = { 0x20, 0x00, 0x00 }; - while (true) + // De-initializing XiaomiGamepad handler for device + if (_inputThread.IsAlive) + Stop(); + + Device.Dispose(); + _cts.Dispose(); + } + + public void Start() + { + _inputThread.Start(); + } + + public void Stop() + { + if (_cts.IsCancellationRequested) { - rumble_mutex.WaitOne(); - if (local_vibration[2] != Vibration[2] || Vibration[1] != local_vibration[1]) + // Thread stop for device already requested + return; + } + + // Requesting thread stop for device + _cts.Cancel(); + _inputThread.Join(); + } + + private void DeviceWorker() + { + // Starting worker thread for device + + // Open HID device to read input from the gamepad + Device.OpenDevice(DeviceMode.Overlapped, DeviceMode.Overlapped, ShareMode.Exclusive); + ExclusiveMode = true; + + // If exclusive mode is not available, retry in shared mode. + if (!Device.IsOpen) + { + // Cannot access HID device in exclusive mode, retrying in shared mode + + Device.OpenDevice(DeviceMode.Overlapped, DeviceMode.Overlapped, ShareMode.ShareRead | ShareMode.ShareWrite); + ExclusiveMode = false; + + if (!Device.IsOpen) { - local_vibration[2] = Vibration[2]; - local_vibration[1] = Vibration[1]; - rumble_mutex.ReleaseMutex(); - Device.WriteFeatureData(local_vibration); - //Console.WriteLine("Big Motor: {0}, Small Motor: {1}", Vibration[2], Vibration[1]); + // Cannot open HID device + Device.CloseDevice(); + Ended?.Invoke(this, EventArgs.Empty); + return; } - else + } + + // Init Xiaomi Gamepad vibration + Device.WriteFeatureData(new byte[] { 0x20, 0x00, 0x00 }); + + // Connect the virtual Xbox360 gamepad + try + { + // Connecting to ViGEm client + _target.Connect(); + } + catch (VigemAlreadyConnectedException) + { + // ViGEm client was already opened, closing and reopening it + _target.Disconnect(); + _target.Connect(); + } + + Started?.Invoke(this, EventArgs.Empty); + + var token = _cts.Token; + + while (!token.IsCancellationRequested) + { + // Is device has been closed, exit the loop + if (!Device.IsOpen) + break; + + // Otherwise read a report + var hidReport = Device.FastReadReport(1000); + + if (hidReport.ReadStatus == HidDeviceData.ReadStatus.WaitTimedOut) + continue; + if (hidReport.ReadStatus != HidDeviceData.ReadStatus.Success) { - rumble_mutex.ReleaseMutex(); + // Cannot read HID report for device + break; } - Thread.Sleep(20); + + var data = hidReport.Data; + + /* + [0] Buttons state, 1 bit per button + [1] Buttons state, 1 bit per button + [2] 0x00 + [3] D-Pad + [4] Left thumb, X axis + [5] Left thumb, Y axis + [6] Right thumb, X axis + [7] Right thumb, Y axis + [8] 0x00 + [9] 0x00 + [10] L trigger + [11] R trigger + [12] Accelerometer axis 1 + [13] Accelerometer axis 1 + [14] Accelerometer axis 2 + [15] Accelerometer axis 2 + [16] Accelerometer axis 3 + [17] Accelerometer axis 3 + [18] Battery level + [19] MI button + */ + + lock (_target) + { + _target.SetButtonState(Xbox360Button.A, GetBit(data[0], 0)); + _target.SetButtonState(Xbox360Button.B, GetBit(data[0], 1)); + _target.SetButtonState(Xbox360Button.X, GetBit(data[0], 3)); + _target.SetButtonState(Xbox360Button.Y, GetBit(data[0], 4)); + _target.SetButtonState(Xbox360Button.LeftShoulder, GetBit(data[0], 6)); + _target.SetButtonState(Xbox360Button.RightShoulder, GetBit(data[0], 7)); + + _target.SetButtonState(Xbox360Button.Back, GetBit(data[1], 2)); + _target.SetButtonState(Xbox360Button.Start, GetBit(data[1], 3)); + _target.SetButtonState(Xbox360Button.LeftThumb, GetBit(data[1], 5)); + _target.SetButtonState(Xbox360Button.RightThumb, GetBit(data[1], 6)); + + // Reset Hat switch status, as is set to 15 (all directions set, impossible state) + _target.SetButtonState(Xbox360Button.Up, false); + _target.SetButtonState(Xbox360Button.Left, false); + _target.SetButtonState(Xbox360Button.Down, false); + _target.SetButtonState(Xbox360Button.Right, false); + + if (data[3] < 8) + { + var btns = HatSwitches[data[3]]; + // Hat Switch is a number from 0 to 7, where 0 is Up, 1 is Up-Left, etc. + foreach (var b in btns) + _target.SetButtonState(b, true); + } + + // Analog axis + _target.SetAxisValue(Xbox360Axis.LeftThumbX, MapAnalog(data[4])); + _target.SetAxisValue(Xbox360Axis.LeftThumbY, MapAnalog(data[5], true)); + _target.SetAxisValue(Xbox360Axis.RightThumbX, MapAnalog(data[6])); + _target.SetAxisValue(Xbox360Axis.RightThumbY, MapAnalog(data[7], true)); + + // Triggers + _target.SetSliderValue(Xbox360Slider.LeftTrigger, data[10]); + _target.SetSliderValue(Xbox360Slider.RightTrigger, data[11]); + + // Logo ("home") button + if (GetBit(data[19], 0)) + { + _target.SetButtonState(Xbox360Button.Guide, true); + Task.Delay(200, token).ContinueWith(DelayedReleaseGuideButton); + } + + // Update battery level + BatteryLevel = data[18]; + + _target.SubmitReport(); + } + + } + + // Disconnect the virtual Xbox360 gamepad + // Let Dispose handle that, otherwise it will rise a NotPluggedIn exception + // Disconnecting ViGEm client + _target.Disconnect(); + + // Close the HID device + // Closing HID device + Device.CloseDevice(); + + // Exiting worker thread for device + Ended?.Invoke(this, EventArgs.Empty); + } + + private static bool GetBit(byte b, int bit) + { + return ((b >> bit) & 1) != 0; + } + + private static short MapAnalog(byte value, bool invert = false) + { + return (short)(value * 257 * (invert ? -1 : 1) + short.MinValue); + } + + private void DelayedReleaseGuideButton(Task t) + { + lock (_target) + { + _target.SetButtonState(Xbox360Button.Guide, false); + _target.SubmitReport(); } } - private void input_thread(HidDevice Device, ScpBus scpBus, int index) + private void VibrationTimer_Trigger(object o) { - scpBus.PlugIn(index); - X360Controller controller = new X360Controller(); - int timeout = 30; - long last_changed = 0; - long last_mi_button = 0; - while (true) + Task.Run(() => { + lock (_vibrationTimer) + { + if (Device.IsOpen) + Device.WriteFeatureData(new byte[] { 0x20, 0x00, 0x00 }); + + // Vibration feedback reset after 3 seconds for device + } + }); + } + + private void Target_OnFeedbackReceived(object sender, Xbox360FeedbackReceivedEventArgs e) + { + byte[] data = { 0x20, e.SmallMotor, e.LargeMotor }; + + Task.Run(() => { + + lock (_vibrationTimer) + { + if (!Device.IsOpen) + return; + + Device.WriteFeatureData(data); + } + + var timeout = e.SmallMotor > 0 || e.LargeMotor > 0 ? 3000 : Timeout.Infinite; + _vibrationTimer.Change(timeout, Timeout.Infinite); + + }); + + if (LedNumber != e.LedNumber) { - HidDeviceData data = Device.Read(timeout); - var currentState = data.Data; - bool changed = false; - if (data.Status == HidDeviceData.ReadStatus.Success && currentState.Length >= 21 && currentState[0] == 4) - { - //Console.WriteLine(Program.ByteArrayToHexString(currentState)); - X360Buttons Buttons = X360Buttons.None; - if ((currentState[1] & 1) != 0) Buttons |= X360Buttons.A; - if ((currentState[1] & 2) != 0) Buttons |= X360Buttons.B; - if ((currentState[1] & 8) != 0) Buttons |= X360Buttons.X; - if ((currentState[1] & 16) != 0) Buttons |= X360Buttons.Y; - if ((currentState[1] & 64) != 0) Buttons |= X360Buttons.LeftBumper; - if ((currentState[1] & 128) != 0) Buttons |= X360Buttons.RightBumper; - - if ((currentState[2] & 32) != 0) Buttons |= X360Buttons.LeftStick; - if ((currentState[2] & 64) != 0) Buttons |= X360Buttons.RightStick; - - if (currentState[4] != 15) - { - if (currentState[4] == 0 || currentState[4] == 1 || currentState[4] == 7) Buttons |= X360Buttons.Up; - if (currentState[4] == 4 || currentState[4] == 3 || currentState[4] == 5) Buttons |= X360Buttons.Down; - if (currentState[4] == 6 || currentState[4] == 5 || currentState[4] == 7) Buttons |= X360Buttons.Left; - if (currentState[4] == 2 || currentState[4] == 1 || currentState[4] == 3) Buttons |= X360Buttons.Right; - } - - if ((currentState[2] & 8) != 0) Buttons |= X360Buttons.Start; - if ((currentState[2] & 4) != 0) Buttons |= X360Buttons.Back; - - - - if ((currentState[20] & 1) != 0) - { - last_mi_button = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond); - Buttons |= X360Buttons.Logo; - } - if (last_mi_button != 0) Buttons |= X360Buttons.Logo; - - - if (controller.Buttons != Buttons) - { - changed = true; - controller.Buttons = Buttons; - } - - short LeftStickX = (short)((Math.Max(-127.0, currentState[5] - 128) / 127) * 32767); - if (LeftStickX == -32767) - LeftStickX = -32768; - - if (LeftStickX != controller.LeftStickX) - { - changed = true; - controller.LeftStickX = LeftStickX; - } - - short LeftStickY = (short)((Math.Max(-127.0, currentState[6] - 128) / 127) * -32767); - if (LeftStickY == -32767) - LeftStickY = -32768; - - if (LeftStickY != controller.LeftStickY) - { - changed = true; - controller.LeftStickY = LeftStickY; - } - - short RightStickX = (short)((Math.Max(-127.0, currentState[7] - 128) / 127) * 32767); - if (RightStickX == -32767) - RightStickX = -32768; - - if (RightStickX != controller.RightStickX) - { - changed = true; - controller.RightStickX = RightStickX; - } - - short RightStickY = (short)((Math.Max(-127.0, currentState[8] - 128) / 127) * -32767); - if (RightStickY == -32767) - RightStickY = -32768; - - if (RightStickY != controller.RightStickY) - { - changed = true; - controller.RightStickY = RightStickY; - } - - if (controller.LeftTrigger != currentState[11]) - { - changed = true; - controller.LeftTrigger = currentState[11]; - } - - if (controller.RightTrigger != currentState[12]) - { - changed = true; - controller.RightTrigger = currentState[12]; - - } - } - - if (data.Status == HidDeviceData.ReadStatus.WaitTimedOut || (!changed && ((last_changed + timeout) < (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond)))) - { - changed = true; - } - - if (changed) - { - //Console.WriteLine("changed"); - //Console.WriteLine((DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond)); - byte[] outputReport = new byte[8]; - scpBus.Report(index, controller.GetReport(), outputReport); - - if (outputReport[1] == 0x08) - { - byte bigMotor = outputReport[3]; - byte smallMotor = outputReport[4]; - rumble_mutex.WaitOne(); - if (bigMotor != Vibration[2] || Vibration[1] != smallMotor) - { - Vibration[1] = smallMotor; - Vibration[2] = bigMotor; - } - rumble_mutex.ReleaseMutex(); - } - - if (last_mi_button != 0) - { - if ((last_mi_button + 100) < (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond)) - { - last_mi_button = 0; - controller.Buttons ^= X360Buttons.Logo; - } - } - - last_changed = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; - } + LedNumber = e.LedNumber; + // TODO raise event here } } + } } diff --git a/MiController/app.config b/MiController/app.config new file mode 100644 index 0000000..04fcaeb --- /dev/null +++ b/MiController/app.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/MiController/packages.config b/MiController/packages.config new file mode 100644 index 0000000..8f3ff2b --- /dev/null +++ b/MiController/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file