示例#1
0
 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);
                }
            }
        }