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); } } }
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); }