Crate vmgs

Source
Expand description

Implementation of the VMGS file format.

§Implementation Notes

This particular implementation of the VMGS file format began life as a line-by-line port of the existing C++ VMGS code in Hyper-V. This kind of rote-porting was fairly common in the early days of the HvLite project (when folks were still getting a feel for Rust), though as time has gone on, most instances of rote-ported code have been refactored/rewritten to follow idiomatic Rust patterns.

Unfortunately, the VMGS code is pretty complex, and giving it a proper “deep clean” would require a non-trivial amount of developer effort, which as is often the case - not particularly easy to come by.

Sure, there’s been lots of incremental improvements to the code over the years, and the implementation is in much better shape today than it was in its early days… but the code still has plenty of echoes from that initial C++ port, which really ought to get ironed out.

Modules§

logger
Expose the VmgsLogger trait The definition of VmgsLogger trait that enables VMGS implementation to send log events to an external logger.
save_restore
vmgs_helpers
VMGS helper functions

Structs§

EncryptionAlgorithm
Encryption algorithm used to encrypt VMGS file
FileId
VMGS fixed file IDs
Vmgs
Implementation of the VMGS file format, backed by a generic Disk device.
VmgsFileInfo
Info about a specific VMGS file.

Enums§

Error
VMGS errors.