private static void OnDeviceArrival(UsbNotificationEventArgs args) { if (DeviceArrival != null) { DeviceArrival(null, args); } }
private static void OnDeviceRemoveComplete(UsbNotificationEventArgs args) { if (DeviceRemovalComplete != null) { DeviceRemovalComplete(null, args); } }
protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == WmDevicechange) { if ((int)m.WParam != DbtDeviceArrival && (int)m.WParam != DbtDeviceRemoveComplete) { return; } string name = null; var hdr = (DeviceBroadcastHeader)Marshal.PtrToStructure(m.LParam, typeof(DeviceBroadcastHeader)); var type = hdr.dbcc_devicetype; if (type == DeviceType.DBT_DEVTYP_PORT) { var prt = (DEV_BROADCAST_PORT)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_PORT)); name = new string(prt.dbcp_name); } else if (type == DeviceType.DBT_DEVTYP_DEVICEINTERFACE) { var dev = (DEV_BROADCAST_DEVICEINTERFACE)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_DEVICEINTERFACE)); name = new string(dev.dbcc_name); } if (type == null) { return; } if (name != null) { name = name.Substring(0, name.IndexOf('\0')); } var args = new UsbNotificationEventArgs(type, name); switch ((int)m.WParam) { case DbtDeviceRemoveComplete: OnDeviceRemoveComplete(args); // break; case DbtDeviceArrival: OnDeviceArrival(args); break; } } }