protected PEFile GetPEInfo() { if (InitializeValue(Flags.InitializePEInfo)) { _peFile = ModuleService.GetPEInfo(ImageBase, ImageSize, out _pdbFileInfos, ref _flags); } return(_peFile); }
protected PEImage GetPEInfo() { if (InitializeValue(Flags.InitializePEInfo)) { _peImage = ModuleService.GetPEInfo(ImageBase, ImageSize, ref _pdbInfo, ref _version, ref _flags); } return(_peImage); }
public Module() { ServiceProvider = new ServiceProvider(); ServiceProvider.AddServiceFactoryWithNoCaching <PEImage>(() => GetPEInfo()); ServiceProvider.AddServiceFactory <PEReader>(() => { _onChangeEvent = ModuleService.SymbolService.OnChangeEvent.Register(() => ServiceProvider.RemoveService(typeof(PEReader))); return(ModuleService.GetPEReader(this)); }); }
public Module() { ServiceProvider = new ServiceProvider(); ServiceProvider.AddServiceFactoryWithNoCaching <PEImage>(() => GetPEInfo()); ServiceProvider.AddServiceFactory <PEReader>(() => { // BUGBUG - this can leak OnChangeEvent handlers ModuleService.SymbolService.OnChangeEvent += (object sender, EventArgs e) => ServiceProvider.RemoveService(typeof(PEReader)); return(ModuleService.GetPEReader(this)); }); }
public Module(ITarget target) { ServiceProvider = new ServiceProvider(); ServiceProvider.AddServiceFactoryWithNoCaching <PEImage>(() => GetPEInfo()); ServiceProvider.AddServiceFactory <PEReader>(() => ModuleService.GetPEReader(this)); if (target.OperatingSystem == OSPlatform.Linux) { ServiceProvider.AddServiceFactory <ELFFile>(() => ModuleService.GetELFFile(this)); } if (target.OperatingSystem == OSPlatform.OSX) { ServiceProvider.AddServiceFactory <MachOFile>(() => ModuleService.GetMachOFile(this)); } _onChangeEvent = target.Services.GetService <ISymbolService>()?.OnChangeEvent.Register(() => { ServiceProvider.RemoveService(typeof(MachOFile)); ServiceProvider.RemoveService(typeof(ELFFile)); ServiceProvider.RemoveService(typeof(PEReader)); }); }