Beispiel #1
0
 private void OnDeviceChange(DeviceBroadcastVolume DevDesc, DeviceChangeEventType EventType)
 {
     if (DeviceChange != null)
     {
         foreach (char ch in DevDesc.Drives)
         {
             DeviceChangeEventArgs a = new DeviceChangeEventArgs(ch, EventType);
             DeviceChange(this, a);
         }
     }
 }
		private void OnDeviceChange(DeviceBroadcastVolume DevDesc, DeviceChangeEventType EventType)
		{
			if (DeviceChange != null)
			{
				foreach (char ch in DevDesc.Drives)
				{
					DeviceChangeEventArgs a = new DeviceChangeEventArgs(ch, EventType);
					DeviceChange(this, a);
				}
			}
		}
Beispiel #3
0
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_DEVICECHANGE)
            {
                DeviceBroadcastHeader head;
                switch (m.WParam.ToInt32())
                {
                /*case DBT_DEVNODES_CHANGED :
                 * break;
                 * case DBT_CONFIGCHANGED :
                 * break;*/
                case DBT_DEVICEARRIVAL:
                    head = (DeviceBroadcastHeader)Marshal.PtrToStructure(m.LParam, typeof(DeviceBroadcastHeader));
                    if (head.DeviceType == DeviceType.LogicalVolume)
                    {
                        DeviceBroadcastVolume DevDesc = (DeviceBroadcastVolume)Marshal.PtrToStructure(m.LParam, typeof(DeviceBroadcastVolume));
                        if (DevDesc.Flags == VolumeChangeFlags.Media)
                        {
                            OnDeviceChange(DevDesc, DeviceChangeEventType.DeviceInserted);
                        }
                    }
                    break;

                /*case DBT_DEVICEQUERYREMOVE :
                 * break;
                 * case DBT_DEVICEQUERYREMOVEFAILED :
                 * break;
                 * case DBT_DEVICEREMOVEPENDING :
                 * break;*/
                case DBT_DEVICEREMOVECOMPLETE:
                    head = (DeviceBroadcastHeader)Marshal.PtrToStructure(m.LParam, typeof(DeviceBroadcastHeader));
                    if (head.DeviceType == DeviceType.LogicalVolume)
                    {
                        DeviceBroadcastVolume DevDesc = (DeviceBroadcastVolume)Marshal.PtrToStructure(m.LParam, typeof(DeviceBroadcastVolume));
                        if (DevDesc.Flags == VolumeChangeFlags.Media)
                        {
                            OnDeviceChange(DevDesc, DeviceChangeEventType.DeviceRemoved);
                        }
                    }
                    break;

                    /*case DBT_DEVICETYPESPECIFIC :
                     * break;*/
                }
            }
            base.WndProc(ref m);
        }