コード例 #1
0
        protected virtual void OnDeviceRemoved(DEV_BROADCAST_VOLUME volume)
        {
            char c = DriveMaskToLetter(volume.dbcv_unitmask);
            var  e = new RemovableMediaEventArgs()
            {
                Drive = c + ":\\",
            };

            DeviceRemoved?.BeginInvoke(this, e, null, null);
        }
コード例 #2
0
        protected virtual bool OnQueryRemove()
        {
            var e = new RemovableMediaEventArgs()
            {
                Drive = this.currentDrive, // drive which is hooked
            };

            QueryRemove?.Invoke(this, e);

            return(e.Cancel);
        }
コード例 #3
0
        protected virtual void OnDeviceArrived(DEV_BROADCAST_VOLUME volume)
        {
            // Get the drive letter
            char c = DriveMaskToLetter(volume.dbcv_unitmask);
            var  e = new RemovableMediaEventArgs {
                Drive = c + ":\\"
            };

            DeviceArrived?.Invoke(this, e);

            // Register for query remove if requested
            if (e.HookQueryRemove)
            {
                // If something is already hooked, unhook it now
                if (this.deviceNotifyHandle != IntPtr.Zero)
                {
                    RegisterForDeviceChange(false, null);
                }

                RegisterQuery(c + ":\\");
            }
        }