VirtualBox

Changeset 69059 in vbox for trunk


Ignore:
Timestamp:
Oct 12, 2017 12:31:42 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
118339
Message:

UDF: Some more structures.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/formats/udf.h

    r69035 r69059  
    840840    /** 0x02: Reserved \#1. */
    841841    uint16_t        uReserved1;
    842     /** 0x04: Partition number (UDF_ENTITY_ID_VPM_PARTITION_TYPE,
     842    /** 0x04: Partition ID type (UDF_ENTITY_ID_VPM_PARTITION_TYPE,
    843843     *  UDF_ENTITY_ID_SPM_PARTITION_TYPE, or UDF_ENTITY_ID_MPM_PARTITION_TYPE). */
    844844    UDFENTITYID     idPartitionType;
     
    847847    /** 0x26: Partition number. */
    848848    uint16_t        uPartitionNo;
    849     /** 0x28: Reserved \#2. */
    850     uint8_t         abReserved2[24];
     849    /** 0x28: Data specific to the partition ID type. */
     850    union
     851    {
     852        /** 0x28: Generic view. */
     853        uint8_t     ab[24];
     854
     855        /** UDF_ENTITY_ID_VPM_PARTITION_TYPE. */
     856        struct
     857        {
     858            /** 0x28: Reserved. */
     859            uint8_t         abReserved2[24];
     860        } Vpm;
     861
     862        /** UDF_ENTITY_ID_SPM_PARTITION_TYPE. */
     863        struct
     864        {
     865            /** 0x28: Packet length in blocks.   */
     866            uint16_t        cBlocksPerPacket;
     867            /** 0x2a: Number of sparing tables. */
     868            uint8_t         cSparingTables;
     869            /** 0x2b: Reserved padding byte. */
     870            uint8_t         bReserved2;
     871            /** 0x2c: The size of each sparing table. */
     872            uint32_t        cbSparingTable;
     873            /** 0x30: The sparing table locations (logical block). */
     874            uint32_t        aoffSparingTables[4];
     875        } Spm;
     876
     877        /** UDF_ENTITY_ID_MPM_PARTITION_TYPE. */
     878        struct
     879        {
     880            /** 0x28: Metadata file entry location (logical block). */
     881            uint32_t        offMetadataFile;
     882            /** 0x2c: Metadata mirror file entry location (logical block). */
     883            uint32_t        offMetadataMirrorFile;
     884            /** 0x30: Metadata bitmap file entry location (logical block). */
     885            uint32_t        offMetadataBitmapFile;
     886            /** 0x34: The metadata allocation unit (logical blocks) */
     887            uint32_t        cBlocksAllocationUnit;
     888            /** 0x38: The metadata allocation unit alignment (logical blocks). */
     889            uint16_t        cBlocksAlignmentUnit;
     890            /** 0x3a: Flags, UDFPARTMAPMETADATA_F_XXX. */
     891            uint8_t         fFlags;
     892            /** 0x3b: Reserved. */
     893            uint8_t         abReserved2[5];
     894        } Mpm;
     895    } u;
    851896} UDFPARTMAPTYPE2;
    852897AssertCompileSize(UDFPARTMAPTYPE2, 64);
    853898/** Pointer to a type 2 partition map. */
    854899typedef UDFPARTMAPTYPE2 *PUDFPARTMAPTYPE2;
    855 /** Pointer to a const type 2 partition map1. */
     900/** Pointer to a const type 2 partition map. */
    856901typedef UDFPARTMAPTYPE2 const *PCUDFPARTMAPTYPE2;
     902
     903/** @name UDFPARTMAPMETADATA_F_XXX
     904 * @{ */
     905/** Indicates that the metadata is mirrored too, not just the file entry. */
     906#define UDFPARTMAPMETADATA_F_DATA_MIRRORED      UINT8_C(1)
     907/** @} */
    857908
    858909
  • trunk/src/VBox/Runtime/common/fs/isovfs.cpp

    r69050 r69059  
    47874787                    UDF_LOG2_MEMBER_EX(pType2, "#06RX16", uVolumeSeqNo, 5);
    47884788                    UDF_LOG2_MEMBER_EX(pType2, "#06RX16", uPartitionNo, 5);
     4789                    if (UDF_ENTITY_ID_EQUALS(&pType2->idPartitionType, UDF_ENTITY_ID_SPM_PARTITION_TYPE))
     4790                    {
     4791                        UDF_LOG2_MEMBER_EX(&pType2->u, "#06RX16", Spm.cBlocksPerPacket, 5);
     4792                        UDF_LOG2_MEMBER_EX(&pType2->u, "#04RX8", Spm.cSparingTables, 5);
     4793                        if (pType2->u.Spm.bReserved2)
     4794                            UDF_LOG2_MEMBER_EX(&pType2->u, "#04RX8", Spm.bReserved2, 5);
     4795                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Spm.cbSparingTable, 5);
     4796                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Spm.aoffSparingTables[0], 5);
     4797                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Spm.aoffSparingTables[1], 5);
     4798                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Spm.aoffSparingTables[2], 5);
     4799                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Spm.aoffSparingTables[3], 5);
     4800                    }
     4801                    else if (UDF_ENTITY_ID_EQUALS(&pType2->idPartitionType, UDF_ENTITY_ID_MPM_PARTITION_TYPE))
     4802                    {
     4803                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Mpm.offMetadataFile, 5);
     4804                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Mpm.offMetadataMirrorFile, 5);
     4805                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Mpm.offMetadataBitmapFile, 5);
     4806                        UDF_LOG2_MEMBER_EX(&pType2->u, "#010RX32", Mpm.cBlocksAllocationUnit, 5);
     4807                        UDF_LOG2_MEMBER_EX(&pType2->u, "#06RX16", Mpm.cBlocksAlignmentUnit, 5);
     4808                        UDF_LOG2_MEMBER_EX(&pType2->u, "#04RX8", Mpm.fFlags, 5);
     4809                        if (!ASMMemIsZero(pType2->u.Mpm.abReserved2, sizeof(pType2->u.Mpm.abReserved2)))
     4810                            UDF_LOG2_MEMBER_EX(&pType2->u, ".5Rhxs", Mpm.abReserved2, 5);
     4811                    }
    47894812                }
    47904813                else
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette