@@ -77,8 +77,11 @@ def __init__(self, fh: BinaryIO | Path, parent: BinaryIO | VMDK | None = None):
7777 fh .close ()
7878
7979 # The descriptor file determines the parent
80- if self .parent is None and self .descriptor .attributes ["parentCID" ] != "ffffffff" :
81- self .parent = open_parent (path .parent , self .descriptor .attributes ["parentFileNameHint" ])
80+ if self .parent is None :
81+ if self .descriptor .attributes ["parentCID" ] != "ffffffff" :
82+ self .parent = open_parent (path .parent , self .descriptor .attributes ["parentFileNameHint" ])
83+ elif self .descriptor .attributes .get ("ddb.nativeParentCID" , "ffffffff" ) != "ffffffff" :
84+ self .parent = open_parent (path .parent , self .descriptor .attributes ["ddb.nativeParentHint" ])
8285
8386 # Open all extents listed in the descriptor
8487 for extent_descriptor in self .descriptor .extents :
@@ -91,8 +94,11 @@ def __init__(self, fh: BinaryIO | Path, parent: BinaryIO | VMDK | None = None):
9194 extent = Extent .from_fh (fh , path )
9295
9396 # The single file VMDK may have a parent in the embedded descriptor
94- if extent .descriptor and extent .descriptor .attributes ["parentCID" ] != "ffffffff" :
95- self .parent = open_parent (path .parent , extent .descriptor .attributes ["parentFileNameHint" ])
97+ if extent .descriptor :
98+ if extent .descriptor .attributes ["parentCID" ] != "ffffffff" :
99+ self .parent = open_parent (path .parent , extent .descriptor .attributes ["parentFileNameHint" ])
100+ elif extent .descriptor .attributes .get ("ddb.nativeParentCID" , "ffffffff" ) != "ffffffff" :
101+ self .parent = open_parent (path .parent , extent .descriptor .attributes ["ddb.nativeParentHint" ])
96102
97103 self .extents .append (extent )
98104
0 commit comments