internal HidDeviceCapabilities(NativeMethods.HidpCaps capabilities) { Usage = capabilities.Usage; UsagePage = capabilities.UsagePage; InputReportByteLength = capabilities.InputReportByteLength; OutputReportByteLength = capabilities.OutputReportByteLength; FeatureReportByteLength = capabilities.FeatureReportByteLength; Reserved = capabilities.Reserved; NumberLinkCollectionNodes = capabilities.NumberLinkCollectionNodes; NumberInputButtonCaps = capabilities.NumberInputButtonCaps; NumberInputValueCaps = capabilities.NumberInputValueCaps; NumberInputDataIndices = capabilities.NumberInputDataIndices; NumberOutputButtonCaps = capabilities.NumberOutputButtonCaps; NumberOutputValueCaps = capabilities.NumberOutputValueCaps; NumberOutputDataIndices = capabilities.NumberOutputDataIndices; NumberFeatureButtonCaps = capabilities.NumberFeatureButtonCaps; NumberFeatureValueCaps = capabilities.NumberFeatureValueCaps; NumberFeatureDataIndices = capabilities.NumberFeatureDataIndices; }
private static bool GetDeviceCapabilities(SafeFileHandle hidHandle, ref NativeMethods.HidpCaps deviceCapabilities) { var preparsedData = new IntPtr(); try { NativeMethods.HidD_GetPreparsedData(hidHandle, ref preparsedData); NativeMethods.HidP_GetCaps(preparsedData, ref deviceCapabilities); return(true); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } finally { if (preparsedData != IntPtr.Zero) { NativeMethods.HidD_FreePreparsedData(preparsedData); } } }