bool ExportSystemData(const Volume& volume, const Partition& partition, const std::string& export_folder) { bool success = true; File::CreateFullPath(export_folder + "/sys/"); success &= ExportHeader(volume, partition, export_folder + "/sys/boot.bin"); success &= ExportBI2Data(volume, partition, export_folder + "/sys/bi2.bin"); success &= ExportApploader(volume, partition, export_folder + "/sys/apploader.img"); success &= ExportDOL(volume, partition, export_folder + "/sys/main.dol"); success &= ExportFST(volume, partition, export_folder + "/sys/fst.bin"); if (volume.GetVolumeType() == Platform::WiiDisc) { File::CreateFullPath(export_folder + "/disc/"); success &= ExportWiiUnencryptedHeader(volume, export_folder + "/disc/header.bin"); success &= ExportWiiRegionData(volume, export_folder + "/disc/region.bin"); success &= ExportTicket(volume, partition, export_folder + "/ticket.bin"); success &= ExportTMD(volume, partition, export_folder + "/tmd.bin"); success &= ExportCertificateChain(volume, partition, export_folder + "/cert.bin"); if (volume.IsEncryptedAndHashed()) success &= ExportH3Hashes(volume, partition, export_folder + "/h3.bin"); } return success; }
// // Export file header // bool CCCDFile::ExportHeader(const gchar *filepath, const gchar *format, unsigned flags, GError **error) const { assert (m_Handle != NULL); g_assert(format != NULL); g_assert(filepath != NULL); if (strcmp(format, "text/csv")) { g_set_error(error, g_AppError, 0, "Unsupported file format (%s)", format); return false; } FILE *f = open_file(filepath, "w"); if (!f) { g_set_error(error, g_AppError, 0, "Failed to create the file: %s", filepath); return false; } CCSVWriter *writer = new CCSVWriter(f, ',', '\"', (flags & EXPORT_NO_HEADER)!=0); if (writer) { ExportHeader(*writer, flags); delete writer; } fclose(f); return true; }
// 輸出檔案 int GmodelExp::DoExport(const TCHAR *name,ExpInterface *ei,Interface *i, BOOL suppressPrompts, DWORD options) { // Set a global prompt display switch showPrompts = suppressPrompts ? FALSE : TRUE; exportSelected = (options & SCENE_EXPORT_SELECTED) ? TRUE : FALSE; // Grab the interface pointer. ip = i; if(showPrompts) { // Prompt the user with our dialogbox, and get all the options. if (!DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_GMODELEXPORT_DLG), ip->GetMAXHWnd(), ExportDlgProc, (LPARAM)this)) { return 1; } } // Open the stream m_pFile = _tfopen(name,_T("wt")); if ( !m_pFile ) { return 0; } // Startup the progress bar. ip->ProgressStart(GetString(IDS_PROGRESS_MSG), TRUE, fn, NULL); // Get node & material list BuildTable(); // Export file header ExportHeader(); // Material //if ( m_bExportMaterial ) ExportMaterial(); // Mesh //if ( m_bExportMesh ) ExportMesh(); // Done :) Finish the progress bar. ip->ProgressEnd(); // Close the stream fclose(m_pFile); return 1; }