//private bool m_configInProgress; //private bool m_extractAbort; //public event ConnectionManager.ExtractUpdateDelegate ExtractUpdate; public ConnectionManager() { this.m_ObjDeviceManager = new DeviceManagement(); this.m_DeviceIdentity = new Hashtable(); this.m_ParseAndPackDataObj = new ParseAndPackData(); this.m_DevicePathList = new List <string>(); this.m_DevicePathID = new Hashtable(); }
internal eReturn UnRegisterDevices(IntPtr deviceNotificationHandle) { eReturn eReturn = eReturn.FAILURE; try { if (DeviceManagement.UnregisterDeviceNotification(deviceNotificationHandle)) { eReturn = eReturn.SUCCESS; } } catch { eReturn = eReturn.FAILURE; } return(eReturn); }
internal eReturn EnumerateDevices(Guid geneaGuid, List <string> devicePathName) { int RequiredSize = 0; IntPtr num = IntPtr.Zero; IntPtr DeviceInfoSet = new IntPtr(); bool flag1 = false; DeviceManagement.SP_DEVICE_INTERFACE_DATA DeviceInterfaceData = new DeviceManagement.SP_DEVICE_INTERFACE_DATA(); bool flag2 = false; eReturn eReturn1 = eReturn.FAILURE; eReturn eReturn2; try { DeviceInfoSet = DeviceManagement.SetupDiGetClassDevs(ref geneaGuid, IntPtr.Zero, IntPtr.Zero, 18); eReturn2 = eReturn.SUCCESS; } catch { eReturn2 = eReturn.FAILURE; } if (eReturn2 == eReturn.SUCCESS) { eReturn1 = eReturn.FAILURE; int MemberIndex = 0; try { DeviceInterfaceData.cbSize = Marshal.SizeOf <DeviceManagement.SP_DEVICE_INTERFACE_DATA>(DeviceInterfaceData); eReturn2 = eReturn.SUCCESS; } catch { eReturn2 = eReturn.FAILURE; } if (eReturn2 == eReturn.SUCCESS) { eReturn1 = eReturn.FAILURE; do { try { flag2 = DeviceManagement.SetupDiEnumDeviceInterfaces(DeviceInfoSet, IntPtr.Zero, ref geneaGuid, MemberIndex, ref DeviceInterfaceData); eReturn2 = eReturn.SUCCESS; } catch { eReturn2 = eReturn.FAILURE; } if (eReturn2 == eReturn.SUCCESS) { eReturn2 = eReturn.FAILURE; if (!flag2) { flag1 = true; } else { try { flag2 = DeviceManagement.SetupDiGetDeviceInterfaceDetail(DeviceInfoSet, ref DeviceInterfaceData, IntPtr.Zero, 0, ref RequiredSize, IntPtr.Zero); num = Marshal.AllocHGlobal(RequiredSize); Marshal.WriteInt32(num, IntPtr.Size == 4 ? 4 + Marshal.SystemDefaultCharSize : 8); flag2 = DeviceManagement.SetupDiGetDeviceInterfaceDetail(DeviceInfoSet, ref DeviceInterfaceData, num, RequiredSize, ref RequiredSize, IntPtr.Zero); eReturn2 = eReturn.SUCCESS; } catch { eReturn2 = eReturn.FAILURE; } if (eReturn2 == eReturn.SUCCESS) { eReturn2 = eReturn.FAILURE; if (flag2) { IntPtr ptr = new IntPtr(num.ToInt32() + 4); devicePathName.Add(Marshal.PtrToStringAuto(ptr)); } } } } ++MemberIndex; }while (!flag1); } if (num != IntPtr.Zero) { Marshal.FreeHGlobal(num); } if (DeviceInfoSet != IntPtr.Zero) { try { DeviceManagement.SetupDiDestroyDeviceInfoList(DeviceInfoSet); eReturn2 = eReturn.SUCCESS; } catch { eReturn2 = eReturn.FAILURE; } } if (flag1) { eReturn2 = eReturn.SUCCESS; } } return(eReturn2); }
internal eReturn RegisterDevices(IntPtr formHandle, Guid classGuid, ref IntPtr deviceNotificationHandle) { DeviceManagement.DEV_BROADCAST_DEVICEINTERFACE structure = new DeviceManagement.DEV_BROADCAST_DEVICEINTERFACE(); IntPtr num = IntPtr.Zero; int cb = 0; eReturn eReturn1 = eReturn.FAILURE; eReturn eReturn2; try { cb = Marshal.SizeOf <DeviceManagement.DEV_BROADCAST_DEVICEINTERFACE>(structure); eReturn2 = eReturn.SUCCESS; } catch { eReturn2 = eReturn.FAILURE; } if (eReturn2 == eReturn.SUCCESS) { eReturn1 = eReturn.FAILURE; structure.dbcc_size = cb; structure.dbcc_devicetype = 5; structure.dbcc_reserved = 0; structure.dbcc_classguid = classGuid; num = Marshal.AllocHGlobal(cb); try { Marshal.StructureToPtr <DeviceManagement.DEV_BROADCAST_DEVICEINTERFACE>(structure, num, true); eReturn2 = eReturn.SUCCESS; } catch { eReturn2 = eReturn.FAILURE; } if (eReturn2 == eReturn.SUCCESS) { eReturn1 = eReturn.FAILURE; deviceNotificationHandle = DeviceManagement.RegisterDeviceNotification(formHandle, num, 0); try { Marshal.PtrToStructure <DeviceManagement.DEV_BROADCAST_DEVICEINTERFACE>(num, structure); eReturn2 = eReturn.SUCCESS; } catch { eReturn2 = eReturn.FAILURE; } if (eReturn2 == eReturn.SUCCESS) { eReturn1 = eReturn.FAILURE; try { eReturn2 = deviceNotificationHandle.ToInt32() != IntPtr.Zero.ToInt32() ? eReturn.SUCCESS : eReturn.FAILURE; } catch { eReturn2 = eReturn.FAILURE; } } } } if (num != IntPtr.Zero) { Marshal.FreeHGlobal(num); } return(eReturn2); }