private static bool GetDeviceDetails(IntPtr info, SP_DEVICE_INTERFACE_DATA deviceInfoData, out SP_DEVICE_INTERFACE_DETAIL_DATA details) { bool hasMore; int required_size = 0; SetupDiGetDeviceInterfaceDetail(info, ref deviceInfoData, NULL, 0, ref required_size, NULL); details = new SP_DEVICE_INTERFACE_DETAIL_DATA(); if (IntPtr.Size == 8) { details.cbSize = 8; } else if (IntPtr.Size == 4) { details.cbSize = 5; } hasMore = SetupDiGetDeviceInterfaceDetail(info, ref deviceInfoData, ref details, required_size, ref required_size, IntPtr.Zero); if (!hasMore) { return(true); } return(false); }
private static 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);