:py:mod:`dissect.hypervisor.disk.vhd` ===================================== .. py:module:: dissect.hypervisor.disk.vhd Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.hypervisor.disk.vhd.VHD dissect.hypervisor.disk.vhd.Disk dissect.hypervisor.disk.vhd.FixedDisk dissect.hypervisor.disk.vhd.DynamicDisk dissect.hypervisor.disk.vhd.BlockAllocationTable Functions ~~~~~~~~~ .. autoapisummary:: :nosignatures: dissect.hypervisor.disk.vhd.read_footer .. py:function:: read_footer(fh) .. py:class:: VHD(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:class:: Disk(fh, footer=None) .. py:method:: read_sectors(sector, count) :abstractmethod: .. py:class:: FixedDisk(fh, footer=None) Bases: :py:obj:`Disk` .. py:method:: read_sectors(sector, count) .. py:class:: DynamicDisk(fh, footer=None) Bases: :py:obj:`Disk` .. py:method:: read_sectors(sector, count) .. py:class:: BlockAllocationTable(fh, offset, max_entries) Implementation of the BAT. Entries are uint32 sector offsets to blocks in the file. .. py:attribute:: ENTRY .. py:method:: get(block) .. py:method:: __getitem__(block)