public override void VisitModuleDefinitionCollection(ModuleDefinitionCollection modules) { ModuleTable mt = m_tableReader.GetModuleTable(); if (mt == null || mt.Rows.Count != 1) { throw new ReflectionException("Can not read main module"); } ModuleRow mr = mt.Rows [0] as ModuleRow; string name = ReadString(mr.Name); ModuleDefinition main = new ModuleDefinition(name, m_asmDef, this, true); main.Mvid = m_streams.GuidHeap [mr.Mvid]; main.MetadataToken = new MetadataToken(TokenType.Module, 1); modules.Add(main); m_module = main; m_module.Accept(this); FileTable ftable = m_tableReader.GetFileTable(); if (ftable != null && ftable.Rows.Count > 0) { foreach (FileRow frow in ftable.Rows) { if (frow.Flags == Mono.Cecil.FileAttributes.ContainsMetaData) { name = ReadString(frow.Name); FileInfo location = new FileInfo(Path.Combine(m_img.FileInformation.DirectoryName, name)); if (!File.Exists(location.FullName)) { throw new FileNotFoundException("Module not found : " + name); } try { ImageReader module = ImageReader.Read(location.FullName); mt = module.Image.MetadataRoot.Streams.TablesHeap [ModuleTable.RId] as ModuleTable; if (mt == null || mt.Rows.Count != 1) { throw new ReflectionException("Can not read module : " + name); } mr = mt.Rows [0] as ModuleRow; ModuleDefinition modext = new ModuleDefinition(name, m_asmDef, new StructureReader(module, m_manifestOnly), false); modext.Mvid = module.Image.MetadataRoot.Streams.GuidHeap [mr.Mvid]; modules.Add(modext); } catch (ReflectionException) { throw; } catch (Exception e) { throw new ReflectionException("Can not read module : " + name, e); } } } } }
/// <summary> /// Computes the ModuleIdentifier of the PE File as if the module belong to given assembly. /// </summary> /// <param name="peFileReader"></param> /// <param name="containingAssemblyIdentity"></param> /// <returns></returns> internal ModuleIdentity GetModuleIdentifier(PEFileReader peFileReader, AssemblyIdentity containingAssemblyIdentity) //^ requires peFileReader.ReaderState >= ReaderState.Metadata; //^ ensures (result.Location != null && result.Location.Length != 0); { ModuleRow moduleRow = peFileReader.ModuleTable[1]; IName moduleName = this.metadataReaderHost.NameTable.GetNameFor(peFileReader.StringStream[moduleRow.Name]); return(new ModuleIdentity(moduleName, peFileReader.BinaryDocumentMemoryBlock.BinaryDocument.Location, containingAssemblyIdentity)); }
public override void FromRawData(byte [] buff, int offs, int numRows) { for (int i = numRows; --i >= 0;) { Row row = new ModuleRow(this); row.FromRawData(buff, offs); Add(row); offs += ModuleRow.LogicalSize; } }
/// <summary> /// Reads the specified token. /// </summary> /// <param name="token">The token.</param> /// <param name="result">The result.</param> public void Read(TokenTypes token, out ModuleRow result) { if ((token & TokenTypes.TableMask) != TokenTypes.Module) { throw new ArgumentException("Invalid token type for ModuleRow.", "token"); } using (BinaryReader reader = CreateReaderForToken(token)) { result = new ModuleRow(reader.ReadUInt16(), ReadIndexValue(reader, IndexType.StringHeap), ReadIndexValue(reader, IndexType.GuidHeap), ReadIndexValue(reader, IndexType.GuidHeap), ReadIndexValue(reader, IndexType.GuidHeap)); } }
void DrawModuleDependencies(ModuleRow row) { using (new EditorGUI.IndentLevelScope()) { using (new EditorGUI.DisabledScope(true)) { var script = row.script; if (script) { EditorGUILayout.ObjectField(row.script, typeof(MonoScript), false); } } var dependencies = row.dependencies; if (dependencies.Count > 0) { var showDependencies = row.showDependencies; showDependencies = EditorGUILayout.Foldout(showDependencies, "Dependencies", true); row.showDependencies = showDependencies; if (showDependencies) { using (new EditorGUI.IndentLevelScope()) { foreach (var moduleType in dependencies) { DrawModule(moduleType); } } } } var dependentModules = row.dependentModules; if (dependentModules.Count > 0) { var showDependentModules = row.showDependentModules; showDependentModules = EditorGUILayout.Foldout(showDependentModules, "Dependent Modules", true); row.showDependentModules = showDependentModules; if (showDependentModules) { using (new EditorGUI.IndentLevelScope()) { foreach (var moduleType in dependentModules) { DrawModule(moduleType); } } } } } }
private void btnUpdate_Click(object sender, EventArgs e) { if (dgvModules.SelectedRows.Count <= 0) { return; } DialogResult dr = MessageBox.Show("確定要更新選擇的模組?", "ischool", MessageBoxButtons.YesNo); if (dr == System.Windows.Forms.DialogResult.No) { return; } MultiTaskingRunner_up runner = new MultiTaskingRunner_up(); ModuleRow mr = dgvModules.SelectedRows[0].DataBoundItem as ModuleRow; string udmName = mr.Name; RunnerDic = new Dictionary <string, BitTask>(); foreach (ConnectionHelper conn in Connections) { TestAddTask(runner, conn, udmName); } runner.ExecuteTasks(); for (int x = 0; x < 1; x--) { if (RunnerDic.Count > 0) { bool Succeed = ReNewTask(); if (Succeed) { break; } } } //try //{ // InitConnections(); // LoadAllModuleConfig(); // GroupByToDataGrid(); //} //catch { Close(); } //爆了就關吧。 }
public override void VisitModuleDefinition(ModuleDefinition module) { if (module.Main) { ModuleTable modTable = m_tableWriter.GetModuleTable(); ModuleRow modRow = m_rowWriter.CreateModuleRow( (ushort)0, m_mdWriter.AddString(module.Name), m_mdWriter.AddGuid(module.Mvid), (uint)0, (uint)0); modTable.Rows.Add(modRow); } else { // multiple module assemblies throw new NotImplementedException(); } }
public override void VisitModuleDefinition(ModuleDefinition module) { if (module.Main) { ModuleTable modTable = m_tableWriter.GetModuleTable(); ModuleRow modRow = m_rowWriter.CreateModuleRow( 0, m_mdWriter.AddString(module.Name), m_mdWriter.AddGuid(module.Mvid), 0, 0); modTable.Rows.Add(modRow); module.MetadataToken = new MetadataToken(TokenType.Module, 1); } else { // multiple module assemblies throw new NotImplementedException(); } }
private void btnDelete_Click(object sender, EventArgs e) { if (dgvModules.SelectedRows.Count <= 0) { return; } DialogResult dr = MessageBox.Show("確定要刪除選擇的模組?", "ischool", MessageBoxButtons.YesNo); if (dr == System.Windows.Forms.DialogResult.No) { return; } MultiTaskingRunner runner = new MultiTaskingRunner(); ModuleRow mr = dgvModules.SelectedRows[0].DataBoundItem as ModuleRow; string modUrl = mr.Url; foreach (ConnectionHelper conn in Connections) { string name = Program.GlobalSchoolCache[conn.UID].Title; runner.AddTask(string.Format("{0}({1})", name, conn.UID), (x) => { object[] obj = x as object[]; ConnectionHelper c = obj[0] as ConnectionHelper; string xurl = (string)obj[1]; RemoveDesktopModule(c, xurl); }, new object[] { conn, modUrl }, new System.Threading.CancellationTokenSource()); } runner.ExecuteTasks(); try { InitConnections(); LoadAllModuleConfig(); GroupByToDataGrid(); } catch { Close(); } //爆了就關吧。 }
public virtual void VisitModuleRow(ModuleRow row) { }
public static ModuleDefinition Resolve(uint rid, ModuleRow row, MetadataSystem metadata) { var resolver = new ModuleDefinitionResolver(rid, row, metadata); return(new ModuleDefinition(resolver)); }
private ModuleDefinitionResolver(uint rid, ModuleRow row, MetadataSystem metadata) { _token = new MetadataToken(MetadataTokenType.Module, rid); _row = row; _metadata = metadata; }
void IMetadataProvider.Read(TokenTypes token, out ModuleRow result) { TableHeap theap = (TableHeap)_streams[(int)HeapType.Tables]; theap.Read(token, out result); }
public ModuleLoaderSettingsEditor() { foreach (var moduleType in k_ModuleTypes) { var moduleNamespace = moduleType.Namespace; var group = m_RootNamespaceGroup; if (!string.IsNullOrEmpty(moduleNamespace)) { var namespaceParts = moduleNamespace.Split('.'); foreach (var part in namespaceParts) { var lastGroup = group; if (!group.children.TryGetValue(part, out group)) { group = new NamespaceGroup(); lastGroup.children.Add(part, group); } } } var moduleRow = new ModuleRow(moduleType); group.modules.Add(moduleRow); m_ModuleRows[moduleType] = moduleRow; } m_RootNamespaceGroup.SortModulesRecursively(); foreach (var moduleType in k_ModuleTypes) { foreach (var @interface in moduleType.GetInterfaces()) { if (@interface.IsGenericType && @interface.GetGenericTypeDefinition() == typeof(IModuleDependency <>)) { var genericArguments = @interface.GetGenericArguments(); if (genericArguments.Length != 1) { Debug.LogErrorFormat("Error drawing module row. {0} must have exactly one generic argument", @interface.Name); continue; } var dependency = genericArguments[0]; ModuleRow row; if (m_ModuleRows.TryGetValue(moduleType, out row)) { row.dependencies.Add(dependency); } } } } var scripts = MonoImporter.GetAllRuntimeMonoScripts(); foreach (var script in scripts) { var type = script.GetClass(); if (type == null) { continue; } ModuleRow row; if (m_ModuleRows.TryGetValue(type, out row)) { row.script = script; } } }
public virtual void VisitModuleRow(ModuleRow row) { }
public ModuleRowChangeEvent(ModuleRow row, global::System.Data.DataRowAction action) { this.eventRow = row; this.eventAction = action; }
public SettingsRow AddSettingsRow(ModuleRow parentModuleRowByModule_Settings) { SettingsRow rowSettingsRow = ((SettingsRow)(this.NewRow())); object[] columnValuesArray = new object[] { null, null}; if ((parentModuleRowByModule_Settings != null)) { columnValuesArray[1] = parentModuleRowByModule_Settings[0]; } rowSettingsRow.ItemArray = columnValuesArray; this.Rows.Add(rowSettingsRow); return rowSettingsRow; }
public void RemoveModuleRow(ModuleRow row) { this.Rows.Remove(row); }
public void AddModuleRow(ModuleRow row) { this.Rows.Add(row); }