public static extern long HidP_GetUsages( [In] HidpReportType reportType, [In] ushort usagePage, [In] ushort linkCollection, [In] ushort[] usageList, [In, Out] ref uint usageLength, [In] IntPtr preparsedData, [In] byte[] report, [In] uint reportLength );
public static extern ulong HidP_GetUsageValue( [In] HidpReportType reportType, [In] ushort usagePage, [In] ushort linkCollection, [In] ushort usage, [Out] out uint usageValue, [In] IntPtr preparsedData, [In] byte[] report, [In] uint reportLength );
public static extern long HidP_GetButtonCaps( [In] HidpReportType reportType, [Out] IntPtr buttonCaps, // CLR crashes without exception (when auto-marshalling struct with union?) [In, Out] ref uint buttonCapsLength, [In] IntPtr preparsedData );
public static extern long HidP_GetValueCaps( [In] HidpReportType reportType, [Out] IntPtr valueCaps, [In, Out] ref uint valueCapsLength, [In] IntPtr preparsedData );
public static extern ulong HidP_MaxUsageListLength( [In] HidpReportType reportType, [In] ushort usagePage, [In] IntPtr preparsedData );