public static PEStructure TryCreate(PEStructureProviderFactory peStructureProviderFactory, HexBufferFile file) { if (file.Properties.TryGetProperty(typeof(PEStructure), out PEStructure peStructure)) { return(peStructure); } var provider = peStructureProviderFactory.TryGetProvider(file); if (provider != null) { peStructure = new PEStructure(provider); } file.Properties.AddProperty(typeof(PEStructure), peStructure); return(peStructure); }
public override object GetReference(HexBufferFile file, ComplexData structure, HexPosition position) { var peStructure = PEStructure.TryCreate(peStructureProviderFactory, file); if (peStructure == null) { return(null); } var info = peStructure.GetField(position); if (info != null) { return(new HexFieldReference(file, info.Value.Structure, info.Value.Field)); } return(null); }