:py:mod:`dissect.hypervisor.disk.vmdk` ====================================== .. py:module:: dissect.hypervisor.disk.vmdk Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.hypervisor.disk.vmdk.VMDK dissect.hypervisor.disk.vmdk.RawDisk dissect.hypervisor.disk.vmdk.SparseDisk dissect.hypervisor.disk.vmdk.SparseExtentHeader dissect.hypervisor.disk.vmdk.DiskDescriptor Functions ~~~~~~~~~ .. autoapisummary:: :nosignatures: dissect.hypervisor.disk.vmdk.open_parent Attributes ~~~~~~~~~~ .. autoapisummary:: dissect.hypervisor.disk.vmdk.log .. py:data:: log .. py:class:: VMDK(fh) Bases: :py:obj:`dissect.util.stream.AlignedStream` Basic buffered stream that provides easy aligned reads. Must be subclassed for various stream implementations. Subclasses can implement: - _read(offset, length) - _seek(pos, whence=io.SEEK_SET) The offset and length for _read are guaranteed to be aligned. The only time that overriding _seek would make sense is if there's no known size of your stream, but still want to provide SEEK_END functionality. Most subclasses of AlignedStream take one or more file-like objects as source. Operations on these subclasses, like reading, will modify the source file-like object as a side effect. :param size: The size of the stream. This is used in read and seek operations. None if unknown. :param align: The alignment size. Read operations are aligned on this boundary. Also determines buffer size. .. py:method:: read_sectors(sector, count) .. py:class:: RawDisk(fh, size=None, offset=0, sector_offset=0) .. py:method:: read_sectors(sector, count) .. py:class:: SparseDisk(fh, parent=None, offset=0, sector_offset=0) .. py:method:: get_runs(sector, count) .. py:method:: read_sectors(sector, count) .. py:class:: SparseExtentHeader(fh) .. py:method:: __getattr__(attr) .. py:class:: DiskDescriptor(attr, extents, disk_db, sectors, raw_config=None) .. py:method:: parse(vmdk_config) :classmethod: .. py:method:: __str__() Return str(self). .. py:function:: open_parent(path, filename_hint)