internal PodSleuthDevice(IVolume volume)
        {
            this.volume = volume;

            volume_info     = new _VolumeInfo(volume);
            production_info = new _ProductionInfo(volume);
            model_info      = new _ModelInfo(volume);

            if (volume.PropertyExists(PodsleuthPrefix + "control_path"))
            {
                string relative_control = volume.GetPropertyString(PodsleuthPrefix + "control_path");
                if (relative_control[0] == Path.DirectorySeparatorChar)
                {
                    relative_control = relative_control.Substring(1);
                }

                ControlPath = Path.Combine(VolumeInfo.MountPoint, relative_control);
            }

            ArtworkFormats = new ReadOnlyCollection <ArtworkFormat> (LoadArtworkFormats());

            if (volume.PropertyExists(PodsleuthPrefix + "firmware_version"))
            {
                FirmwareVersion = volume.GetPropertyString(PodsleuthPrefix + "firmware_version");
            }

            if (volume.PropertyExists(PodsleuthPrefix + "firewire_id"))
            {
                FirewireId = volume.GetPropertyString(PodsleuthPrefix + "firewire_id");
            }

            RescanDisk();
        }
        internal PodSleuthDevice (IVolume volume)
        {
            this.volume = volume;

            volume_info = new _VolumeInfo (volume);
            production_info = new _ProductionInfo (volume);
            model_info = new _ModelInfo (volume);

            if (volume.PropertyExists (PodsleuthPrefix + "control_path")) {
                string relative_control = volume.GetPropertyString (PodsleuthPrefix + "control_path");
                if (relative_control[0] == Path.DirectorySeparatorChar) {
                    relative_control = relative_control.Substring (1);
                }

                ControlPath = Path.Combine(VolumeInfo.MountPoint, relative_control);
            }

            ArtworkFormats = new ReadOnlyCollection<ArtworkFormat> (LoadArtworkFormats ());

            if (volume.PropertyExists (PodsleuthPrefix + "firmware_version")) {
                FirmwareVersion = volume.GetPropertyString (PodsleuthPrefix + "firmware_version");
            }

            if (volume.PropertyExists (PodsleuthPrefix + "firewire_id")) {
                FirewireId = volume.GetPropertyString (PodsleuthPrefix + "firewire_id");
            }

            RescanDisk ();
        }