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
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
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.
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}}|]}