internal Device(DeviceClass deviceClass, Native.SP_DEVINFO_DATA deviceInfoData, string path, int index) { if (deviceClass == null) throw new ArgumentNullException("deviceClass"); if (deviceInfoData == null) throw new ArgumentNullException("deviceInfoData"); _deviceClass = deviceClass; _path = path; // may be null _deviceInfoData = deviceInfoData; _index = index; }
internal Native.SP_DEVINFO_DATA GetInfo(int dnDevInst) { StringBuilder sb = new StringBuilder(1024); int hr = Native.CM_Get_Device_ID(dnDevInst, sb, sb.Capacity, 0); if (hr != 0) throw new Win32Exception(hr); Native.SP_DEVINFO_DATA devData = new Native.SP_DEVINFO_DATA(); devData.cbSize = Marshal.SizeOf(typeof(Native.SP_DEVINFO_DATA)); if (!Native.SetupDiOpenDeviceInfo(_deviceInfoSet, sb.ToString(), IntPtr.Zero, 0, devData)) throw new Win32Exception(Marshal.GetLastWin32Error()); return devData; }