Source code for dfvfs.vfs.vshadow_directory

# -*- coding: utf-8 -*-
"""The Volume Shadow Snapshots (VSS) directory implementation."""

from dfvfs.path import vshadow_path_spec
from dfvfs.vfs import directory


[docs] class VShadowDirectory(directory.Directory): """File system directory that uses pyvshadow.""" def _EntriesGenerator(self): """Retrieves directory entries. Since a directory can contain a vast number of entries using a generator is more memory efficient. Yields: VShadowPathSpec: a path specification. """ location = getattr(self.path_spec, 'location', None) store_index = getattr(self.path_spec, 'store_index', None) # Only the virtual root file has directory entries. if (store_index is None and location is not None and location == self._file_system.LOCATION_ROOT): vshadow_volume = self._file_system.GetVShadowVolume() for store_index in range(0, vshadow_volume.number_of_stores): vss_store_index = store_index + 1 yield vshadow_path_spec.VShadowPathSpec( location=f'/vss{vss_store_index:d}', parent=self.path_spec.parent, store_index=store_index)