private void _export_Click(object sender, EventArgs e) { if (1 != _locationSources.SelectedItems.Count) { return; } ListViewItem item = _locationSources.SelectedItems[0]; TrackItemSummary trackItemSummary = item.Tag as TrackItemSummary; if (null == trackItemSummary) { return; } ToolStripMenuItem menu = sender as ToolStripMenuItem; if (null == menu) { return; } ExportMethod exportMethod = null; EXPORT_FORMAT format = (EXPORT_FORMAT)menu.Tag; switch (format) { case EXPORT_FORMAT.GPX: _exportFileDialog.DefaultExt = ".gpx"; _exportFileDialog.Filter = "GPX Files|*.gpx|ALL Files|*.*"; _exportFileDialog.FileName = trackItemSummary.Name; exportMethod = new ExportMethod(ExportGPX); break; default: return; } if (DialogResult.OK == _exportFileDialog.ShowDialog(this)) { bykIFv1.TrackItem trackItem = trackItemSummary.TrackItem; if (null != exportMethod) { exportMethod(_exportFileDialog.FileName, trackItem); } } }
private void WriteExports() { if (exportDirectory.TargetOffset.FileOffset != 0) { OffsetConverter converter = new OffsetConverter(exportDirectory.Section); Writer.MoveToOffset(exportDirectory.TargetOffset.FileOffset); var exportDirHeader = Writer.OriginalAssembly.importExportTableReader.exportDirectory; Writer.WriteStructure <Structures.IMAGE_EXPORT_DIRECTORY>(exportDirHeader); uint functionOffset = converter.RvaToFileOffset(exportDirHeader.AddressOfFunctions); uint functionNameOffset = converter.RvaToFileOffset(exportDirHeader.AddressOfNames); uint functionNameOrdinalOffset = converter.RvaToFileOffset(exportDirHeader.AddressOfNameOrdinals); for (int i = 0; i < exportDirHeader.NumberOfFunctions; i++) { // TODO: methods with only ordinals. ExportMethod method = Writer.OriginalAssembly.LibraryExports[i]; Writer.MoveToOffset(functionOffset); Writer.BinWriter.Write(method.RVA); Writer.MoveToOffset(functionNameOffset); Writer.BinWriter.Write(method.nameRva); uint nameOffset = converter.RvaToFileOffset(method.nameRva); Writer.MoveToOffset(nameOffset); Writer.WriteAsciiZString(method.Name); Writer.MoveToOffset(functionNameOrdinalOffset); Writer.BinWriter.Write(method.Ordinal); functionOffset += 4; functionNameOffset += 4; functionNameOrdinalOffset += 4; } } }
public async UniTask ExportResourcesAsync(GameSettings settings, string outputDir, ExportMethod exportMethod) { using (var context = new Context(settings)) { foreach (var filePath in ResourceFiles) { var f = await context.AddLinearSerializedFileAsync(filePath); SerializerObject s = context.Deserializer; s.DoAt(f.StartPointer, () => { try { var resf = s.SerializeObject <Gameloft_ResourceFile>(default, name: f.filePath);
public static ExportMethod1 Le2Le(ExportMethod pf) { return(new ExportMethod1(pf.RVA, pf.Ordinal, pf.Name)); }