/// <summary> /// Checks availability of debugging information for given assembly. /// </summary> /// <param name="assemblyPath"> /// File path of the assembly or null if the module is in-memory or dynamic (generated by Reflection.Emit) /// </param> /// <param name="isFileLayout">type of in-memory PE layout, if true, file based layout otherwise, loaded layout</param> /// <param name="loadedPeAddress"> /// Loaded PE image address or zero if the module is dynamic (generated by Reflection.Emit). /// Dynamic modules have their PDBs (if any) generated to an in-memory stream /// (pointed to by <paramref name="inMemoryPdbAddress"/> and <paramref name="inMemoryPdbSize"/>). /// </param> /// <param name="loadedPeSize">loaded PE image size</param> /// <param name="inMemoryPdbAddress">in memory PDB address or zero</param> /// <param name="inMemoryPdbSize">in memory PDB size</param> /// <returns>Symbol reader handle or zero if error</returns> internal static IntPtr LoadSymbolsForModule(string assemblyPath, bool isFileLayout, IntPtr loadedPeAddress, int loadedPeSize, IntPtr inMemoryPdbAddress, int inMemoryPdbSize, ReadMemoryDelegate readMemory) { try { TargetStream peStream = null; if (assemblyPath == null && loadedPeAddress != IntPtr.Zero) { peStream = new TargetStream(loadedPeAddress, loadedPeSize, readMemory); } TargetStream pdbStream = null; if (inMemoryPdbAddress != IntPtr.Zero) { pdbStream = new TargetStream(inMemoryPdbAddress, inMemoryPdbSize, readMemory); } OpenedReader openedReader = GetReader(assemblyPath, isFileLayout, peStream, pdbStream); if (openedReader != null) { GCHandle gch = GCHandle.Alloc(openedReader); return(GCHandle.ToIntPtr(gch)); } } catch { } return(IntPtr.Zero); }
public void Write(BinaryWriter bw) { string channel = ""; switch (ChatChannel) { case ChatChannels2.System: channel = "$S"; break; case ChatChannels2.NormalWithoutName: channel = "$A"; break; case ChatChannels2.Gm: channel = "$I"; break; case ChatChannels2.CenterScreen: channel = "$X"; break; } byte[] data = Encoding.Unicode.GetBytes(channel + Text + '\0'); bw.Write(data.Length); bw.Write(data); bw.Write((uint)AppendDataMask); TargetStream.Save(bw, Target); }
public void Dispose() { if (SourceReader != null) { SourceReader.Close(); SourceReader.Dispose(); } if (TargetWriter != null) { TargetWriter.Flush(); TargetWriter.Close(); TargetWriter.Dispose(); } if (SourceStream != null) { SourceStream.Close(); SourceStream.Dispose(); } if (TargetStream != null) { TargetStream.Close(); TargetStream.Dispose(); } }
public Stream <TIn, TIn[]> Map <TIn> (Func <TOut, TIn> mapper) { var(Stream, Pusher) = TargetStream <TOut, TIn> .GetTargetStream(mapper, this); _streamer = Pusher; return(Stream); }
public void Read(BinaryReader br) { ID = br.ReadUInt32(); Stop = br.ReadBoolean(); br.ReadBytes(3); Target = TargetStream.Read(br); }
public void Read(BinaryReader br) { int size = br.ReadInt32(); Text = br.ReadBytes(size).ToUnicode(); Target = TargetStream.Read(br); }
public void Write(BinaryWriter bw) { byte[] data = Encoding.Unicode.GetBytes(Text + '\0'); bw.Write(data.Length); bw.Write(data); TargetStream.Save(bw, Target); }
public void Should_Return_Valid_Result_Stream() { WorkRelationTerms TEST_CONTRACT_TYPE = WorkRelationTerms.WORKTERM_EMPLOYMENT_1; WorkHealthTerms TEST_HEALTH_TYPE = WorkHealthTerms.HEALTH_TERM_EMPLOYMENT; WorkSocialTerms TEST_SOCIAL_TYPE = WorkSocialTerms.SOCIAL_TERM_EMPLOYMENT; ITargetValues contractValues = TargetValueBuilder.CreateContractEmplTermValues( TEST_CONTRACT_TYPE, TEST_HEALTH_TYPE, TEST_SOCIAL_TYPE, null, null); ITargetValues positionValues = TargetValueBuilder.CreatePositionEmplTermValues(null, null); ITargetValues positionSalary = TargetValueBuilder.CreateSalaryBaseValues(10000m); ITargetValues emptyValues = TargetValueBuilder.CreateEmptyValues(); ITargetStream targets = TargetStream.CreateEmptyStream(). AddNewContractsTarget(ConfigSetCzArticleName.REF_CONTRACT_EMPL_TERM, contractValues, testConfig). AddNewPositionsTarget(ConfigSetCzArticleName.REF_POSITION_EMPL_TERM, positionValues, testConfig). AddTargetIntoPosition(ConfigSetCzArticleName.REF_SALARY_BASE, positionSalary, testConfig). AddTargetIntoPosition(ConfigSetCzArticleName.REF_INCOME_GROSS, emptyValues, testConfig); IEngineProfile testProfile = testEngine.BuildEngineProfile(testPeriod); IProcessService testModule = ProcessServiceModule.CreateModule(targets, testConfig, testProfile, serviceLog); IResultStream results = testModule.EvaluateTargetsToResults(); serviceLog.CloseLogStream(); Assert.AreEqual(0, results.Results().Keys.Count); }
public void Write(BinaryWriter bw) { bw.Write(ID); bw.Write(Period); bw.Write(Counter); TargetStream.Save(bw, Target); }
public void Read(BinaryReader br) { ID = br.ReadUInt32(); Period = br.ReadUInt32(); Counter = br.ReadUInt32(); Target = TargetStream.Read(br); }
public void Write(BinaryWriter bw) { bw.Write(ID); bw.Write(Stop); bw.Write(new byte[] { 0, 0, 0 }); TargetStream.Save(bw, Target); }
public void Write(BinaryWriter bw) { bw.Write(RadiusValue); bw.Write(RadiusType); bw.Write(TargetID); bw.Write(Target_Type); TargetStream.Save(bw, Target); }
public void Write(BinaryWriter bw) { bw.Write(ActionName.FromGBK(128)); bw.Write(Loop); bw.Write(new byte[] { 0, 0, 0 }); bw.Write(Interval); TargetStream.Save(bw, Target); }
public void Read(BinaryReader br) { ActionName = br.ReadBytes(128).ToGBK(); Loop = br.ReadBoolean(); br.ReadBytes(3); Interval = br.ReadInt32(); Target = TargetStream.Read(br); }
public void Write(BinaryWriter bw) { bw.Write(WorldID); bw.Write(PathID); bw.Write((int)PatrolType); bw.Write((int)SpeedType); TargetStream.Save(bw, Target); }
public void Write(BinaryWriter bw) { bw.Write(ID); bw.Write(IDType); bw.Write(Range); bw.Write(PlayerNum); TargetStream.Save(bw, Target); }
public void Read(BinaryReader br) { ID = br.ReadUInt32(); IDType = br.ReadUInt32(); Range = br.ReadInt32(); PlayerNum = br.ReadInt32(); Target = TargetStream.Read(br); }
public void Read(BinaryReader br) { WorldID = br.ReadInt32(); PathID = br.ReadInt32(); PatrolType = (MonsterPatrolType)br.ReadInt32(); SpeedType = (MonsterPatrolSpeedType)br.ReadInt32(); Target = TargetStream.Read(br); }
public void Write(BinaryWriter bw) { bw.Write(ActionName.FromGBK(128)); bw.Write(LoopCount); bw.Write(Interval); bw.Write(PlayTime); TargetStream.Save(bw, Target); }
public void Read(BinaryReader br) { RadiusValue = br.ReadSingle(); RadiusType = br.ReadUInt32(); TargetID = br.ReadInt32(); Target_Type = br.ReadUInt32(); Target = TargetStream.Read(br); }
public void Read(BinaryReader br) { ActionName = br.ReadBytes(128).ToGBK(); LoopCount = br.ReadInt32(); Interval = br.ReadInt32(); PlayTime = br.ReadInt32(); Target = TargetStream.Read(br); }
public void Read(BinaryReader br) { ID = br.ReadInt32(); Value = br.ReadInt32(); IsHistoryValue = br.ReadBoolean(); br.ReadBytes(3); Target = TargetStream.Read(br); }
public void Write(BinaryWriter bw) { bw.Write(ID); bw.Write(Value); bw.Write(IsHistoryValue); bw.Write(new byte[] { 0, 0, 0 }); TargetStream.Save(bw, Target); }
public void Write(BinaryWriter bw) { bw.Write(Skill.Value); bw.Write(SkillType); bw.Write(Level); bw.Write(LevelType); TargetStream.Save(bw, Target); }
public void Read(BinaryReader br) { Skill = new SkillID() { Value = br.ReadUInt32() }; Level = br.ReadUInt32(); Target = TargetStream.Read(br); }
public void Write(BinaryWriter bw) { bw.Write(MonsterID.Value); bw.Write(Range); bw.Write(Life); bw.Write((int)DispearCondition); bw.Write(PathID); bw.Write(MonsterNum); TargetStream.Save(bw, Target); }
public void Write(BinaryWriter bw) { bw.Write(MinX); bw.Write(MinY); bw.Write(MinZ); bw.Write(MaxX); bw.Write(MaxY); bw.Write(MaxZ); TargetStream.Save(bw, Target); }
public void Read(BinaryReader br) { MinX = br.ReadSingle(); MinY = br.ReadSingle(); MinZ = br.ReadSingle(); MaxX = br.ReadSingle(); MaxY = br.ReadSingle(); MaxZ = br.ReadSingle(); Target = TargetStream.Read(br); }
/// <summary> /// Load native symbols and modules (i.e. dac, dbi). /// </summary> /// <param name="callback">called back for each symbol file loaded</param> /// <param name="parameter">callback parameter</param> /// <param name="tempDirectory">temp directory unique to this instance of SOS</param> /// <param name="moduleFilePath">module path</param> /// <param name="address">module base address</param> /// <param name="size">module size</param> /// <param name="readMemory">read memory callback delegate</param> public static void LoadNativeSymbols(SymbolFileCallback callback, IntPtr parameter, string tempDirectory, string moduleFilePath, ulong address, int size, ReadMemoryDelegate readMemory) { if (IsSymbolStoreEnabled()) { Debug.Assert(s_tracer != null); Stream stream = new TargetStream(address, size, readMemory); KeyTypeFlags flags = KeyTypeFlags.SymbolKey | KeyTypeFlags.ClrKeys; KeyGenerator generator = null; if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { var elfFile = new ELFFile(new StreamAddressSpace(stream), 0, true); generator = new ELFFileKeyGenerator(s_tracer, elfFile, moduleFilePath); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { var machOFile = new MachOFile(new StreamAddressSpace(stream), 0, true); generator = new MachOFileKeyGenerator(s_tracer, machOFile, moduleFilePath); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { var peFile = new PEFile(new StreamAddressSpace(stream), true); generator = new PEFileKeyGenerator(s_tracer, peFile, moduleFilePath); } else { return; } try { IEnumerable <SymbolStoreKey> keys = generator.GetKeys(flags); foreach (SymbolStoreKey key in keys) { string moduleFileName = Path.GetFileName(key.FullPathName); s_tracer.Verbose("{0} {1}", key.FullPathName, key.Index); // Don't download the sos binaries that come with the runtime if (moduleFileName != "SOS.NETCore.dll" && !moduleFileName.StartsWith("libsos.")) { string downloadFilePath = GetSymbolFile(key, tempDirectory); if (downloadFilePath != null) { s_tracer.Information("{0}: {1}", moduleFileName, downloadFilePath); callback(parameter, moduleFileName, downloadFilePath); } } } } catch (Exception ex) when(ex is BadInputFormatException || ex is InvalidVirtualAddressException) { s_tracer.Error("{0}/{1:X16}: {2}", moduleFilePath, address, ex.Message); } } }
public void Write(BinaryWriter bw) { bw.Write(MonsterID.Value); bw.Write(Range); bw.Write(Life); bw.Write(Dispear); bw.Write(UsePolicyTarget); bw.Write(PathID); bw.Write(MonsterNum); TargetStream.Save(bw, Target); }
/// <summary> /// Checks availability of debugging information for given assembly. /// </summary> /// <param name="assemblyPath"> /// File path of the assembly or null if the module is in-memory or dynamic (generated by Reflection.Emit) /// </param> /// <param name="isFileLayout">type of in-memory PE layout, if true, file based layout otherwise, loaded layout</param> /// <param name="loadedPeAddress"> /// Loaded PE image address or zero if the module is dynamic (generated by Reflection.Emit). /// Dynamic modules have their PDBs (if any) generated to an in-memory stream /// (pointed to by <paramref name="inMemoryPdbAddress"/> and <paramref name="inMemoryPdbSize"/>). /// </param> /// <param name="loadedPeSize">loaded PE image size</param> /// <param name="inMemoryPdbAddress">in memory PDB address or zero</param> /// <param name="inMemoryPdbSize">in memory PDB size</param> /// <returns>Symbol reader handle or zero if error</returns> internal static IntPtr LoadSymbolsForModule(string assemblyPath, bool isFileLayout, IntPtr loadedPeAddress, int loadedPeSize, IntPtr inMemoryPdbAddress, int inMemoryPdbSize, ReadMemoryDelegate readMemory) { try { TargetStream peStream = null; if (assemblyPath == null && loadedPeAddress != IntPtr.Zero) { peStream = new TargetStream(loadedPeAddress, loadedPeSize, readMemory); } TargetStream pdbStream = null; if (inMemoryPdbAddress != IntPtr.Zero) { pdbStream = new TargetStream(inMemoryPdbAddress, inMemoryPdbSize, readMemory); } OpenedReader openedReader = GetReader(assemblyPath, isFileLayout, peStream, pdbStream); if (openedReader != null) { GCHandle gch = GCHandle.Alloc(openedReader); return GCHandle.ToIntPtr(gch); } } catch { } return IntPtr.Zero; }