Example #1
0
        /// <summary>
        /// Конструктор, связывающий раздел с устройством.
        /// </summary>
        /// <param name="device">Устройство, на котором расположен раздел.</param>
        public Partition(Device device, Interop.PARTITION_INFORMATION partInfo)
            : base()
        {
            if (device == null)
                throw new ArgumentNullException();

            _device = device;
            _partInfo = partInfo;
            _mounts.AddRange(QueryMountPoints());

            _updateInterval = TimeSpan.FromSeconds(20);
        }
Example #2
0
        private void UpdateData()
        {
            lock (_syncObject)
            {
                if (_lastUpdate.Add(_updateInterval) > DateTime.Now)
                    return;

                _lastUpdate = DateTime.Now;

                _partInfo = GetPartitionInformation();
                _mounts.Clear();
                _mounts.AddRange(QueryMountPoints());
            }
        }
Example #3
0
        private Interop.PARTITION_INFORMATION GetPartitionInformation()
        {
            lock (_syncObject)
            {
                List<Interop.PARTITION_INFORMATION> layout = _device.Layout;
                Interop.PARTITION_INFORMATION rpi = new Interop.PARTITION_INFORMATION();
                bool found = false;
                foreach (Interop.PARTITION_INFORMATION pi in layout)
                    if (pi.PartitionNumber == _partInfo.PartitionNumber) { rpi = pi; found = true; break; }

                if (!found)
                    throw new DriverException("Partition " + _partInfo.PartitionNumber + "doesn't exist.");

                return rpi;
            }
        }