Implement save APIs and provide an mdmerge tool that composes an image from deltas and writes it to disk instead of dumping to console. #35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With these APIs, we can now implement writing an image out to disk or into memory.
The mdmerge tool produces a raw metadata file, not a PE-enveloped file. As a result, mddump (in this repo) is one of the few decent tools that can read it.
The work to fully construct a composite delta image in a PE envelope that can be run requires additional work. For example, including valid RVAs is difficult and requires a more comprehensive implementation and CLI interface, so I deferred on this work as it would likely be as complex if not moreso than the actual metadata saving logic.
Most of the code in mdmerge is a direct copy of mddump.