示例#1
0
 private static void OnDeviceArrival(UsbNotificationEventArgs args)
 {
     if (DeviceArrival != null)
     {
         DeviceArrival(null, args);
     }
 }
示例#2
0
 private static void OnDeviceRemoveComplete(UsbNotificationEventArgs args)
 {
     if (DeviceRemovalComplete != null)
     {
         DeviceRemovalComplete(null, args);
     }
 }
示例#3
0
            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;
                    }
                }
            }