{"id":18524143,"url":"https://github.com/m-elbably/file-splitter","last_synced_at":"2026-04-25T21:32:44.179Z","repository":{"id":73730508,"uuid":"193834950","full_name":"m-elbably/file-splitter","owner":"m-elbably","description":"High-performance binary file splitter, with self-extractor","archived":false,"fork":false,"pushed_at":"2019-06-26T05:30:13.000Z","size":266,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-14T19:14:31.136Z","etag":null,"topics":["cpp","csharp","file-splitter"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m-elbably.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-26T05:24:05.000Z","updated_at":"2024-04-19T09:46:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"c5fcd8c0-1aeb-45ff-8aaa-047f3e2564f3","html_url":"https://github.com/m-elbably/file-splitter","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/m-elbably/file-splitter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-elbably%2Ffile-splitter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-elbably%2Ffile-splitter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-elbably%2Ffile-splitter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-elbably%2Ffile-splitter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m-elbably","download_url":"https://codeload.github.com/m-elbably/file-splitter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-elbably%2Ffile-splitter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32278249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","csharp","file-splitter"],"created_at":"2024-11-06T17:39:43.808Z","updated_at":"2026-04-25T21:32:44.161Z","avatar_url":"https://github.com/m-elbably.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"### File Splitter\n\nHigh-performance binary file splitter, I've written in 2009 with C# and C++.\n\n\u003e :warning: This code is legacy, not maintained and may have a lot of issues.\n\n\u003e :blossom: The main reason for publishing this project that it may be useful for someone to learn from, it has a lot of advanced concepts including Custom GDI+ Components, Threading, Memory Caching, Virtual Memory Mapping, and C++ Win32 Programming.\n\n#### Requirments:\n\n- .Net Framework 2.0\n- Visual Studio 2010 or later\n- Microsoft Windows SDK\n\n#### Components:\n\n##### 1- MMH Split Project\nMain C# application while handles reading source files and split the data and also joining it.\n\n![Main Window](./images/main.jpg)\n![Main Window](./images/options.jpg)\n\n##### 2- Q Join Project\nC++ portable self-extractor, which will be included to join files into the original source file without the main application.\n\nIt has a very small memory footprint, and the join process handled in a separate thread, with the ability to detect missing files and read it on demand from different sources.\n\nIt can work also on Linux with wine.\n\n\u003e All details about files to be joined are injected to Q Join executable it will be mapped and parsed into memory to get all details.\n\nMapping and extraction of stub binary data.\n\n```cpp\nconst HANDLE buff = 0;\nHANDLE file = NULL;\nDWORD buffer = 0;\nchar* namebuffer = new char[255];\n\nGetModuleFileName(GetModuleHandle(0), LPCH(namebuffer), 255);\nfile = CreateFileA(namebuffer, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, buff);\nSetFilePointer(file, realSize, 0,FILE_BEGIN);\n\nunsigned int fSize = 0;\nunsigned int stubSize = 0;\nconst bool fsResult = GetFileSizeEx(file, PLARGE_INTEGER(\u0026fSize));\nif (fsResult \u0026\u0026 fSize \u003e realSize)\n{\n    stubSize = (fSize - realSize) + 1;\n}\n\nif (stubSize \u003c= 0)\n{\n    return \"\";\n}\n\nconst LPVOID memory = VirtualAlloc(0, stubSize, MEM_COMMIT, PAGE_READWRITE);\nReadFile(file, memory, stubSize, LPDWORD(\u0026buffer),NULL);\n\nTCHAR* pStub = new TCHAR[stubSize];\nmemcpy_s(pStub, stubSize, memory, stubSize);\nVirtualFree(memory, 0, MEM_RELEASE);\nCloseHandle(file);\n```\n\n#### License\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-elbably%2Ffile-splitter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm-elbably%2Ffile-splitter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-elbably%2Ffile-splitter/lists"}