Source code for dfvfs.vfs.vshadow_directory

"""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, )