示例#1
0
        /// <summary>
        /// All'avvio controlla se ci sono dispositivi connessi
        /// e inizializza il il gestore di eventi
        /// </summary>
        private void Form1_Load(object sender, EventArgs e)
        {
            UsbManager = new UsbManager();
            UsbManager.StateChanged += new UsbStateChangedEventHandler(DeviceStateChanged);

            // Directory di lavoro per la gestione dei file in user mode
            if (Directory.Exists(Services.FileSSRestoreService.DataDirectory) == false)
            {
                Directory.CreateDirectory(Services.FileSSRestoreService.DataDirectory);
            }

            // display all devices
            UsbDiskCollection disks = UsbManager.GetAvailableDisks();

            WriteLine("Available USB disks:", Color.DarkCyan);
            foreach (UsbDisk disk in disks)
            {
                WriteLine(disk.ToString());
                OnDeviceAdded(disk.Name);
            }
            WriteLine(string.Empty);

            WriteLine("Waiting for events...", Color.DarkCyan);

            Tests();
        }
        /// <summary>
        /// Initialize a new instance of the dialog using the given Controller.
        /// </summary>
        /// <param name="controller"></param>
        public SynchronizeDialog(Controller controller)
            : this()
        {
            this.controller = controller;

            this.manager = new UsbManager();
            this.disks = manager.GetAvailableDisks();
            this.playlists = null;
            this.percentageCompleted = 0;

            this.selector.Loaded += new RoutedEventHandler(DoLoaded);
        }
        private void updateAvailableDisks()
        {
            disks = manager.GetAvailableDisks();

            logText(string.Format("{0} USB disks available", disks.Count()));

            if (disks.HasAny)
            {
                foreach (UsbDisk disk in disks)
                {
                    logText(disk.ToString());
                }
                logText();
            }
        }
示例#4
0
        public void CollectionTest()
        {
            UsbDiskCollection disks = new UsbDiskCollection();
            Assert.IsFalse(disks.Contains("foo"));

            UsbDisk disk = new UsbDisk("foo");
            disks.Add(disk);

            Assert.IsTrue(disks.Contains(disk));
            Assert.IsTrue(disks.Contains("foo"));
            Assert.IsFalse(disks.Contains("missing"));

            disks.Remove("foo");
            Assert.AreEqual(0, disks.Count);
            Assert.IsFalse(disks.Contains("foo"));
        }
示例#5
0
        private static UsbDiskCollection GetUsbDiskCollection()
        {
            UsbManager manager = new UsbManager();

            UsbDiskCollection usbDisks = new UsbDiskCollection();

            try
            {
                foreach (UsbDisk disk in manager.GetAvailableVolumns())
                {
                    usbDisks.Add(disk);
                }
            }
            catch (Exception ex) {
            }
            return(usbDisks);
        }
示例#6
0
        public void CollectionTest()
        {
            UsbDiskCollection disks = new UsbDiskCollection();

            Assert.IsFalse(disks.Contains("foo"));

            UsbDisk disk = new UsbDisk("foo");

            disks.Add(disk);

            Assert.IsTrue(disks.Contains(disk));
            Assert.IsTrue(disks.Contains("foo"));
            Assert.IsFalse(disks.Contains("missing"));

            disks.Remove("foo");
            Assert.AreEqual(0, disks.Count);
            Assert.IsFalse(disks.Contains("foo"));
        }
示例#7
0
        public static void GetUdiskInfo()
        {
            UsbManager manager = new UsbManager();

            try
            {
                var newDiskCollection = GetUsbDiskCollection();
                if (!diskCollection.SequenceEqual(newDiskCollection))
                {
                    diskCollection = newDiskCollection;
                    OutText(false, diskCollection, cbb);
                }
            }
            catch (Exception ex) {  }
            finally
            {
                manager.Dispose();
            }
        }
示例#8
0
        public void ManagerTest()
        {
            manager = new UsbManager();
            UsbDiskCollection disks = manager.GetAvailableDisks();

            foreach (UsbDisk disk in disks)
            {
                Console.WriteLine(String.Format(
                                      "{0} {1} ({2})", disk.Name, disk.Volume, disk.Model));
            }

            // need to set GetDiskInformation to 'public' for these lines:
            //UsbDisk d = new UsbDisk("T:", null, null);
            //manager.GetDiskInformation(d);

            manager.StateChanged += new UsbStateChangedEventHandler(manager_StateChanged);

            ManualResetEvent reset = new ManualResetEvent(false);

            reset.WaitOne(120000, false);
        }
        //========================================================================================
        // Methods
        //========================================================================================
        /// <summary>
        /// Gets a collection of all available USB disk drives currently mounted.
        /// </summary>
        /// <returns>
        /// A UsbDiskCollection containing the USB disk drives.
        /// </returns>
        public UsbDiskCollection GetAvailableDisks()
        {
            UsbDiskCollection disks = new UsbDiskCollection();

            // browse all USB WMI physical disks
            foreach (ManagementObject drive in
                new ManagementObjectSearcher(
                    "select DeviceID, Model from Win32_DiskDrive where InterfaceType='USB'").Get())
            {
                // associate physical disks with partitions
                ManagementObject partition = new ManagementObjectSearcher(String.Format(
                    "associators of {{Win32_DiskDrive.DeviceID='{0}'}} where AssocClass = Win32_DiskDriveToDiskPartition",
                    drive["DeviceID"])).First();

                if (partition != null)
                {
                    // associate partitions with logical disks (drive letter volumes)
                    ManagementObject logical = new ManagementObjectSearcher(String.Format(
                        "associators of {{Win32_DiskPartition.DeviceID='{0}'}} where AssocClass = Win32_LogicalDiskToPartition",
                        partition["DeviceID"])).First();

                    if (logical != null)
                    {
                        // finally find the logical disk entry to determine the volume name
                        ManagementObject volume = new ManagementObjectSearcher(String.Format(
                            "select FreeSpace, Size, VolumeName from Win32_LogicalDisk where Name='{0}'",
                            logical["Name"])).First();
                        try
                        {
                            if (volume["VolumeName"] != null)
                            {
                                UsbDisk disk = new UsbDisk(logical["Name"].ToString());
                                disk.Model = drive["Model"].ToString();
                                disk.VolumeLabel = volume["VolumeName"].ToString();
                                disk.AvailableFreeSpace = (ulong) volume["FreeSpace"];
                                disk.TotalSize = (ulong) volume["Size"];

                                disks.Add(disk);
                            }
                        }catch(NullReferenceException)
                        {

                        }
                    }
                }
            }

            return disks;
        }
示例#10
0
		//========================================================================================
		// Methods
		//========================================================================================

		/// <summary>
		/// Gets a collection of all available USB disk drives currently mounted.
		/// </summary>
		/// <returns>
		/// A UsbDiskCollection containing the USB disk drives.
		/// </returns>

		public UsbDiskCollection GetAvailableDisks ()
		{
			UsbDiskCollection disks = new UsbDiskCollection();

			// browse all USB WMI physical disks
			foreach (ManagementObject drive in
				new ManagementObjectSearcher(
                    "select DeviceID, Model from Win32_DiskDrive where InterfaceType='USB' or MediaType='External hard disk media'").Get())
			{
				// associate physical disks with partitions
                foreach (ManagementObject partition in new ManagementObjectSearcher(String.Format(
                    "associators of {{Win32_DiskDrive.DeviceID='{0}'}} where AssocClass = Win32_DiskDriveToDiskPartition",
                    drive["DeviceID"])).Get()) 
                    {
                        try
                        {
                            if (partition != null)
                            {
                                // associate partitions with logical disks (drive letter volumes)
                                ManagementObject logical = new ManagementObjectSearcher(String.Format(
                                    "associators of {{Win32_DiskPartition.DeviceID='{0}'}} where AssocClass = Win32_LogicalDiskToPartition",
                                    partition["DeviceID"])).First();
                                if (logical != null)
                                {
                                    // finally find the logical disk entry to determine the volume name
                                    ManagementObject volume = new ManagementObjectSearcher(String.Format(
                                        "select FreeSpace, Size, VolumeName, DriveType from Win32_LogicalDisk where Name='{0}'",
                                        logical["Name"])).First();
                                    UsbDisk disk = new UsbDisk(logical["Name"].ToString());
                                    disk.Model = drive["Model"].ToString();
                                    disk.Volume = volume["VolumeName"].ToString();
                                    disk.FreeSpace = (ulong)volume["FreeSpace"];
                                    disk.Size = (ulong)volume["Size"];
                                    disk.DriveType = Drivetypeconvert(Int32.Parse(volume["DriveType"].ToString()));
                                    disks.Add(disk);
                                    //MessageBox.Show("HERE");
                                }
                            }
                        }
                        catch { }
                        
                        

				    }
			}

			return disks;
		}
        /// <summary>
        /// Release manages resources.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DoClosed(object sender, EventArgs e)
        {
            if (percentageCompleted > 0)
            {
                controller.Librarian.ProgressChanged -= new ProgressChangedEventHandler(DoProgressChanged);
            }

            // must detach collection from WPF control otherwise will not dispose
            selector.DataContext = null;
            disks.Clear();
            disks = null;

            playlistBox.ItemsSource = null;

            playlists.Dispose();
            playlists = null;

            manager.Dispose();
            manager = null;

            controller = null;
        }