private void RemoveHookedDrive(RemoveQueryHook hookedDrive) { if (hookedDrive != null) { mHookedDrives.Remove(hookedDrive); hookedDrive.Dispose(); } }
public void HookQueryRemove(char driveLetter) { try { if (FindHookedDrive(driveLetter) == null) { RemoveQueryHook hookedDrive = new RemoveQueryHook(driveLetter, mControlHandle); mHookedDrives.Add(hookedDrive); } } catch (System.Exception) { } }
public override bool Equals(object obj) { if (obj is RemoveQueryHook) { RemoveQueryHook driveObj = ( RemoveQueryHook )obj; return(driveObj.mRegisterDeviceHandle.Equals(this.mRegisterDeviceHandle)); } else if (obj is IntPtr) { IntPtr devHandle = (IntPtr)obj; return(devHandle.Equals(this.mRegisterDeviceHandle)); } else { return(base.Equals(obj)); } }
private void RemoveHookedDrive( RemoveQueryHook hookedDrive ) { if ( hookedDrive != null ) { mHookedDrives.Remove( hookedDrive ); hookedDrive.Dispose(); } }
public void HookQueryRemove( char driveLetter ) { try { if ( FindHookedDrive( driveLetter ) == null ) { RemoveQueryHook hookedDrive = new RemoveQueryHook( driveLetter, mControlHandle ); mHookedDrives.Add( hookedDrive ); } } catch ( System.Exception ) { } }
public bool WndProc(ref Message m) { bool callBaseWndProc = true; try { if (m.Msg == WM_DEVICECHANGE) { int wParam = m.WParam.ToInt32(); if (wParam == DBT_DEVICEARRIVAL || wParam == DBT_DEVICEREMOVECOMPLETE || wParam == DBT_DEVICEQUERYREMOVE) { DEV_BROADCAST_HDR baseStructure = (DEV_BROADCAST_HDR)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HDR)); switch (baseStructure.dbch_devicetype) { case DBT_DEVTYP_VOLUME: { DEV_BROADCAST_VOLUME vol = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_VOLUME)); char driveLetter = DriveMaskToLetter(vol.dbcv_unitmask); switch (wParam) { case DBT_DEVICEARRIVAL: HandleDeviceInserted(driveLetter); break; case DBT_DEVICEREMOVECOMPLETE: HandleDeviceRemoved(driveLetter); break; } } break; case DBT_DEVTYP_HANDLE: { DEV_BROADCAST_HANDLE handle = (DEV_BROADCAST_HANDLE)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HANDLE)); RemoveQueryHook hookedDrive = null; lock ( mEventHandlerMutex ) { hookedDrive = FindHookedDrive(handle.dbch_hdevnotify); } if (hookedDrive != null) { switch (wParam) { case DBT_DEVICEQUERYREMOVE: callBaseWndProc = HandleDeviceRemoveQuery(hookedDrive.DriveLetter, ref m); break; } } } break; } } } } catch (System.Exception e) { UsbDriveList.__LogError(this, "DriveDetector.WndProc", e); } return(callBaseWndProc); }