/// <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); }
private void UpdateData() { lock (_syncObject) { if (_lastUpdate.Add(_updateInterval) > DateTime.Now) return; _lastUpdate = DateTime.Now; _partInfo = GetPartitionInformation(); _mounts.Clear(); _mounts.AddRange(QueryMountPoints()); } }
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; } }