mirage/ocaml-vhd

Name: ocaml-vhd

Owner: MirageOS

Description: Read and write .vhd format data

Created: 2013-01-06 14:19:41.0

Updated: 2018-02-25 10:39:31.0

Pushed: 2018-02-27 14:50:58.0

Homepage: null

Size: 733

Language: OCaml

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

ocaml-vhd

A pure OCaml library to read and write vhd format data, plus a simple command-line tool which allows vhd files to be interrogated, manipulated, format-converted and streamed to and from files and remote servers.

Example usage

To initialise your environment in utop:

 Lwt;;
uire "vhd-format";;
uire "vhd-format-lwt";;
le V = Vhd.Make(Vhd_lwt);;

To open a file and read the first sector:

d_IO.openfile "foo.vhd" >>= fun f -> V.Vhd_IO.read_sector f 0L;;
Cstruct.t option = Some {Cstruct.buffer = <abstr>; off = 0; len = 512}   

To read the vhd file header:

d_IO.openfile "89a62601-c82a-447a-a7fd-f7f379195e80.vhd" >>= fun f -> return f.Vhd.Vhd.header;;
Vhd.Header.t = {
.Header.table_offset = 1536L; max_table_entries = 12288;
ck_size_sectors_shift = 12; checksum = -3001l; parent_unique_id = <abstr>;  
ent_time_stamp = 0l; parent_unicode_name = [||];
ent_locators =
{Vhd.Parent_locator.platform_code = Vhd.Platform_code.None;
 platform_data_space = 0l; platform_data_space_original = 0l;
 platform_data_length = 0l; platform_data_offset = 0L;
 platform_data = {Cstruct.buffer = <abstr>; off = 0; len = 0}};
{Vhd.Parent_locator.platform_code = Vhd.Platform_code.None;
 platform_data_space = 0l; platform_data_space_original = 0l;
 platform_data_length = 0l; platform_data_offset = 0L;
 platform_data = {Cstruct.buffer = <abstr>; off = 0; len = 0}};
{Vhd.Parent_locator.platform_code = Vhd.Platform_code.None;
 platform_data_space = 0l; platform_data_space_original = 0l;
 platform_data_length = 0l; platform_data_offset = 0L;
 platform_data = {Cstruct.buffer = <abstr>; off = 0; len = 0}};
{Vhd.Parent_locator.platform_code = Vhd.Platform_code.None;
 platform_data_space = 0l; platform_data_space_original = 0l;
 platform_data_length = 0l; platform_data_offset = 0L;
 platform_data = {Cstruct.buffer = <abstr>; off = 0; len = 0}};
{Vhd.Parent_locator.platform_code = Vhd.Platform_code.None;
 platform_data_space = 0l; platform_data_space_original = 0l;
 platform_data_length = 0l; platform_data_offset = 0L;
 platform_data = {Cstruct.buffer = <abstr>; off = 0; len = 0}};
{Vhd.Parent_locator.platform_code = Vhd.Platform_code.None;
 platform_data_space = 0l; platform_data_space_original = 0l;
 platform_data_length = 0l; platform_data_offset = 0L;
 platform_data = {Cstruct.buffer = <abstr>; off = 0; len = 0}};
{Vhd.Parent_locator.platform_code = Vhd.Platform_code.None;
 platform_data_space = 0l; platform_data_space_original = 0l;
 platform_data_length = 0l; platform_data_offset = 0L;
 platform_data = {Cstruct.buffer = <abstr>; off = 0; len = 0}};
{Vhd.Parent_locator.platform_code = Vhd.Platform_code.None;
 platform_data_space = 0l; platform_data_space_original = 0l;
 platform_data_length = 0l; platform_data_offset = 0L;
 platform_data = {Cstruct.buffer = <abstr>; off = 0; len = 0}}|]}

This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.