#windows #hyper-v #virtualization #virtdisk #vhd

virtdisk-rs

Rust abstractions for VirtDisk APIs

11 releases (stable)

✓ Uses Rust 2018 edition

1.5.0 Jan 5, 2019
1.4.0 Jan 4, 2019
1.0.1 Dec 31, 2018
0.1.2 Dec 20, 2018

#33 in Windows APIs

Download history 85/week @ 2018-12-19 23/week @ 2018-12-26 100/week @ 2019-01-02 26/week @ 2019-01-09 16/week @ 2019-01-16 2/week @ 2019-01-23 2/week @ 2019-01-30 1/week @ 2019-02-06 1/week @ 2019-02-13

59 downloads per month
Used in 1 crate

MIT/Apache

130KB
3K SLoC

virtdisk-rs

Rust wrapper of VirtDisk APIs

Overview

This project is a collection of Rust libraries that wrap functionality exposed by VirtDisk.

VirtDisk APIs are part of the Windows 10 SDK.

NOTE:This crate is untested and simply provides safe Rust abstractions to the virtdisk C bindings. Fixes might come at later updates to the crate. There is no plan for now to create a fully suited integration test for the APIs.

Requirements

For this wrapper to build properly, the following requirements need to be met by the building machine:

  • Windows 10 SDK version 10.0.17763.132.
  • amd64 architecture.
    • This Rust wrapper, for now, expects to build only in amd64.

Wrapped Windows 10 SDK APIs

Note: This section includes the paths in the Windows SDK for the header and lib files based on the default installation path c:\Program Files (x86)\Windows Kits\10.

The relevant Windows 10 SDK files that this project is wrapping are:

  • C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um\virtdisk.h
  • C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64\virtdisk.lib
  • C:\Windows\System32\virtdisk.dll

How to use locally

Clone the repo to a folder:

git clone https://github.com/rafawo/virtdisk-rs.git

Make sure the machine where you are building has Windows 10 SDK version Windows 10 SDK version 10.0.17763.132 installed. Then run:

cd virtdisk-rs
cargo build

Finally, open documentation by running:

cargo doc --open

Dependencies

~1MB
~14K SLoC

  • widestring 0.4
  • winapi 0.3.6+errhandlingapi+handleapi+ioapiset+rpc+rpcdce+securitybaseapi+synchapi+winbase+winerror+winioctl
  • winutils-rs 0.1.2
  • build build.rs