sl@0: using System; sl@0: using System.Runtime.InteropServices; sl@0: sl@0: namespace GenericHid sl@0: { sl@0: internal sealed partial class DeviceManagement sl@0: { sl@0: internal static class NativeMethods sl@0: { sl@0: /// sl@0: // API declarations relating to device management (SetupDixxx and sl@0: // RegisterDeviceNotification functions). sl@0: /// sl@0: sl@0: // from setupapi.h sl@0: sl@0: internal const Int32 DIGCF_PRESENT = 2; sl@0: internal const Int32 DIGCF_DEVICEINTERFACE = 0X10; sl@0: sl@0: internal struct SP_DEVICE_INTERFACE_DATA sl@0: { sl@0: internal Int32 cbSize; sl@0: internal Guid InterfaceClassGuid; sl@0: internal Int32 Flags; sl@0: internal IntPtr Reserved; sl@0: } sl@0: sl@0: internal struct SP_DEVICE_INTERFACE_DETAIL_DATA sl@0: { sl@0: internal Int32 cbSize; sl@0: internal String DevicePath; sl@0: } sl@0: sl@0: internal struct SP_DEVINFO_DATA sl@0: { sl@0: internal Int32 cbSize; sl@0: internal Guid ClassGuid; sl@0: internal Int32 DevInst; sl@0: internal Int32 Reserved; sl@0: } sl@0: sl@0: [DllImport("setupapi.dll", SetLastError = true)] sl@0: internal static extern IntPtr SetupDiCreateDeviceInfoList(ref Guid ClassGuid, IntPtr hwndParent); sl@0: sl@0: [DllImport("setupapi.dll", SetLastError = true)] sl@0: internal static extern Int32 SetupDiDestroyDeviceInfoList(IntPtr DeviceInfoSet); sl@0: sl@0: [DllImport("setupapi.dll", SetLastError = true)] sl@0: internal static extern Boolean SetupDiEnumDeviceInterfaces(IntPtr DeviceInfoSet, IntPtr DeviceInfoData, ref Guid InterfaceClassGuid, Int32 MemberIndex, ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData); sl@0: sl@0: [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] sl@0: internal static extern IntPtr SetupDiGetClassDevs(ref Guid ClassGuid, IntPtr Enumerator, IntPtr hwndParent, Int32 Flags); sl@0: sl@0: [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] sl@0: internal static extern Boolean SetupDiGetDeviceInterfaceDetail(IntPtr DeviceInfoSet, ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData, IntPtr DeviceInterfaceDetailData, Int32 DeviceInterfaceDetailDataSize, ref Int32 RequiredSize, IntPtr DeviceInfoData); sl@0: } sl@0: } sl@0: }