dvmmbr.cpp revision 8a63f697e3c0c9afe0dc326c3db61fd4217fa895
68fce2926ac031f46c25460569296f66620e9d52vboxsync * IPRT Disk Volume Management API (DVM) - MBR format backend.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * Copyright (C) 2011 Oracle Corporation
68fce2926ac031f46c25460569296f66620e9d52vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
68fce2926ac031f46c25460569296f66620e9d52vboxsync * available from http://www.virtualbox.org. This file is free software;
68fce2926ac031f46c25460569296f66620e9d52vboxsync * you can redistribute it and/or modify it under the terms of the GNU
68fce2926ac031f46c25460569296f66620e9d52vboxsync * General Public License (GPL) as published by the Free Software
68fce2926ac031f46c25460569296f66620e9d52vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * The contents of this file may alternatively be used under the terms
68fce2926ac031f46c25460569296f66620e9d52vboxsync * of the Common Development and Distribution License Version 1.0
68fce2926ac031f46c25460569296f66620e9d52vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * VirtualBox OSE distribution, in which case the provisions of the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * CDDL are applicable instead of those of the GPL.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * You may elect to license modified versions of this file under the
68fce2926ac031f46c25460569296f66620e9d52vboxsync * terms and conditions of either the GPL or the CDDL or both.
68fce2926ac031f46c25460569296f66620e9d52vboxsync/*******************************************************************************
68fce2926ac031f46c25460569296f66620e9d52vboxsync* Header Files *
68fce2926ac031f46c25460569296f66620e9d52vboxsync*******************************************************************************/
68fce2926ac031f46c25460569296f66620e9d52vboxsync/*******************************************************************************
68fce2926ac031f46c25460569296f66620e9d52vboxsync* Structures and Typedefs *
68fce2926ac031f46c25460569296f66620e9d52vboxsync*******************************************************************************/
68fce2926ac031f46c25460569296f66620e9d52vboxsync * MBR volume manager data.
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** Pointer to the underlying disk. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** Number of initialized partitions. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** The raw MBR data. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync/** Pointer to the MBR volume manager. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync * MBR volume data.
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** Pointer to the volume manager. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** Partition table entry index. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** Start offset of the volume. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** Size of the volume. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** Pointer to the raw partition table entry. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync/** Pointer to an MBR volume. */
68fce2926ac031f46c25460569296f66620e9d52vboxsynctypedef RTDVMVOLUMEFMTINTERNAL *PRTDVMVOLUMEFMTINTERNAL;
68fce2926ac031f46c25460569296f66620e9d52vboxsync * MBR FS type to DVM volume type mapping entry.
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** MBR FS Id. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync /** DVM volume type. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync/** Pointer to a MBR FS Type to volume type mapping entry. */
68fce2926ac031f46c25460569296f66620e9d52vboxsync/*******************************************************************************
68fce2926ac031f46c25460569296f66620e9d52vboxsync* Global Variables *
68fce2926ac031f46c25460569296f66620e9d52vboxsync*******************************************************************************/
68fce2926ac031f46c25460569296f66620e9d52vboxsync * Mapping of FS types to DVM volume types.
68fce2926ac031f46c25460569296f66620e9d52vboxsync * From http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
68fce2926ac031f46c25460569296f66620e9d52vboxsyncstatic const RTDVMMBRFS2VOLTYPE g_aFs2DvmVolTypes[] =
68fce2926ac031f46c25460569296f66620e9d52vboxsync { 0x07, RTDVMVOLTYPE_NTFS }, /* Simplification: Used for HPFS, exFAT, ++, too but NTFS is the more common one. */
return rc;
return rc;
return rc;
PRTDVMVOLUMEFMTINTERNAL pVol = (PRTDVMVOLUMEFMTINTERNAL)RTMemAllocZ(sizeof(RTDVMVOLUMEFMTINTERNAL));
return rc;
return rc;
static DECLCALLBACK(int) rtDvmFmtMbrQueryNextVolume(RTDVMFMT hVolMgrFmt, RTDVMVOLUMEFMT hVolFmt, PRTDVMVOLUMEFMT phVolFmtNext)
return rc;
return VERR_NOT_SUPPORTED;
return enmVolType;
return fFlags;
bool fIntersect = false;
fIntersect = true;
return fIntersect;
static DECLCALLBACK(int) rtDvmFmtMbrVolumeRead(RTDVMVOLUMEFMT hVolFmt, uint64_t off, void *pvBuf, size_t cbRead)
static DECLCALLBACK(int) rtDvmFmtMbrVolumeWrite(RTDVMVOLUMEFMT hVolFmt, uint64_t off, const void *pvBuf, size_t cbWrite)