package vhd-format
Pure OCaml library to read/write VHD format data
Install
Dune Dependency
github.com
Readme
Changelog
LGPL-2.1-only WITH OCaml-LGPL-linking-exception License
Edit opam file
Versions (12)
Authors
Maintainers
Sources
vhd-format-v0.12.2.tbz
sha256=c14d8ed7714d6f422ed17bd6e8a20f9a15cfc0f29497d2d7c6725fdcf3c410eb
sha512=3b9b9434f54fa481e84dcfbd9b4757fd1bd9d5c6e22d76f5d43881dfa1433404b2bc0993306a941da7c9f1bb16f39d20d8190cb3f21e122c13a50603d0800766
README.md.html
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:
open Lwt;;
#require "vhd-format";;
#require "vhd-format-lwt";;
module V = Vhd.Make(Vhd_lwt);;
To open a file and read the first sector:
V.Vhd_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:
V.Vhd_IO.openfile "89a62601-c82a-447a-a7fd-f7f379195e80.vhd" >>= fun f -> return f.Vhd.Vhd.header;;
- : Vhd.Header.t = {
Vhd.Header.table_offset = 1536L; max_table_entries = 12288;
block_size_sectors_shift = 12; checksum = -3001l; parent_unique_id = <abstr>;
parent_time_stamp = 0l; parent_unicode_name = [||];
parent_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}}|]}
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>