libphdi(3)

πŸŽ€ libphdi β€” Library Functions Manual, section 3 πŸŽ€

okay bestie, sit DOWN because today we're talking about libphdi.h πŸ’… it's the library that lets you access the Parallels Hard Disk image (PHDI) format, and yes, it is giving iconic. this is libphdi(3), so keep your hands inside the vehicle at all times 🫢


✨ SYNOPSIS ✨

#include <libphdi.h>

πŸ’– Support functions

const char *
libphdi_get_version(void);

int
libphdi_get_access_flags_read(void);

int
libphdi_get_access_flags_read_write(void);

int
libphdi_get_access_flags_write(void);

int
libphdi_get_codepage(int *codepage, libphdi_error_t **error);

int
libphdi_set_codepage(int codepage, libphdi_error_t **error);

int
libphdi_check_file_signature(const char *filename,
    libphdi_error_t **error);

Available when compiled with wide character string support:

int
libphdi_check_file_signature_wide(const wchar_t *filename,
    libphdi_error_t **error);

Available when compiled with libbfio support:

int
libphdi_check_file_signature_file_io_handle(libbfio_handle_t *file_io_handle,
    libphdi_error_t **error);

πŸ”” Notify functions

void
libphdi_notify_set_verbose(int verbose);

int
libphdi_notify_set_stream(FILE *stream, libphdi_error_t **error);

int
libphdi_notify_stream_open(const char *filename,
    libphdi_error_t **error);

int
libphdi_notify_stream_close(libphdi_error_t **error);

😭 Error functions

void
libphdi_error_free(libphdi_error_t **error);

int
libphdi_error_fprint(libphdi_error_t *error, FILE *stream);

int
libphdi_error_sprint(libphdi_error_t *error, char *string, size_t size);

int
libphdi_error_backtrace_fprint(libphdi_error_t *error, FILE *stream);

int
libphdi_error_backtrace_sprint(libphdi_error_t *error, char *string,
    size_t size);

πŸ‘‘ Handle functions

int
libphdi_handle_initialize(libphdi_handle_t **handle,
    libphdi_error_t **error);

int
libphdi_handle_free(libphdi_handle_t **handle, libphdi_error_t **error);

int
libphdi_handle_signal_abort(libphdi_handle_t *handle,
    libphdi_error_t **error);

int
libphdi_handle_open(libphdi_handle_t *handle, const char *filename,
    int access_flags, libphdi_error_t **error);

int
libphdi_handle_open_extent_data_files(libphdi_handle_t *handle,
    libphdi_error_t **error);

int
libphdi_handle_close(libphdi_handle_t *handle, libphdi_error_t **error);

ssize_t
libphdi_handle_read_buffer(libphdi_handle_t *handle, void *buffer,
    size_t buffer_size, libphdi_error_t **error);

ssize_t
libphdi_handle_read_buffer_at_offset(libphdi_handle_t *handle,
    void *buffer, size_t buffer_size, off64_t offset,
    libphdi_error_t **error);

off64_t
libphdi_handle_seek_offset(libphdi_handle_t *handle, off64_t offset,
    int whence, libphdi_error_t **error);

int
libphdi_handle_get_offset(libphdi_handle_t *handle, off64_t *offset,
    libphdi_error_t **error);

int
libphdi_handle_set_maximum_number_of_open_handles(libphdi_handle_t *handle,
    int maximum_number_of_open_handles, libphdi_error_t **error);

int
libphdi_handle_set_extent_data_files_path(libphdi_handle_t *handle,
    const char *path, size_t path_length, libphdi_error_t **error);

int
libphdi_handle_get_media_size(libphdi_handle_t *handle,
    size64_t *media_size, libphdi_error_t **error);

int
libphdi_handle_get_utf8_name_size(libphdi_handle_t *handle,
    size_t *utf8_string_size, libphdi_error_t **error);

int
libphdi_handle_get_utf8_name(libphdi_handle_t *handle,
    uint8_t *utf8_string, size_t utf8_string_size,
    libphdi_error_t **error);

int
libphdi_handle_get_utf16_name_size(libphdi_handle_t *handle,
    size_t *utf16_string_size, libphdi_error_t **error);

int
libphdi_handle_get_utf16_name(libphdi_handle_t *handle,
    uint16_t *utf16_string, size_t utf16_string_size,
    libphdi_error_t **error);

int
libphdi_handle_get_number_of_extents(libphdi_handle_t *handle,
    int *number_of_extents, libphdi_error_t **error);

int
libphdi_handle_get_extent_descriptor_by_index(libphdi_handle_t *handle,
    int extent_index, libphdi_extent_descriptor_t **extent_descriptor,
    libphdi_error_t **error);

int
libphdi_handle_get_number_of_snapshots(libphdi_handle_t *handle,
    int *number_of_snapshots, libphdi_error_t **error);

int
libphdi_handle_get_snapshot_by_index(libphdi_handle_t *handle,
    int snapshot_index, libphdi_snapshot_t **snapshot,
    libphdi_error_t **error);

Available when compiled with wide character string support:

int
libphdi_handle_open_wide(libphdi_handle_t *handle,
    const wchar_t *filename, int access_flags, libphdi_error_t **error);

int
libphdi_handle_set_extent_data_files_path_wide(libphdi_handle_t *handle,
    const wchar_t *path, size_t path_length, libphdi_error_t **error);

Available when compiled with libbfio support:

int
libphdi_handle_open_file_io_handle(libphdi_handle_t *handle,
    libbfio_handle_t *file_io_handle, int access_flags,
    libphdi_error_t **error);

int
libphdi_handle_open_extent_data_files_file_io_pool(libphdi_handle_t *handle,
    libbfio_pool_t *file_io_pool, libphdi_error_t **error);

πŸ¦‹ Extent descriptor functions

int
libphdi_extent_descriptor_free(libphdi_extent_descriptor_t **extent_descriptor,
    libphdi_error_t **error);

int
libphdi_extent_descriptor_get_range(libphdi_extent_descriptor_t *extent_descriptor,
    off64_t *offset, size64_t *size, libphdi_error_t **error);

int
libphdi_extent_descriptor_get_number_of_images(libphdi_extent_descriptor_t *extent_descriptor,
    int *number_of_images, libphdi_error_t **error);

int
libphdi_extent_descriptor_get_image_descriptor_by_index(libphdi_extent_descriptor_t *extent_descriptor,
    int image_index, libphdi_image_descriptor_t **image_descriptor,
    libphdi_error_t **error);

🌸 Image descriptor functions

int
libphdi_image_descriptor_free(libphdi_image_descriptor_t **image_descriptor,
    libphdi_error_t **error);

int
libphdi_image_descriptor_get_type(libphdi_image_descriptor_t *image_descriptor,
    int *type, libphdi_error_t **error);

int
libphdi_image_descriptor_get_utf8_filename_size(libphdi_image_descriptor_t *image_descriptor,
    size_t *utf8_string_size, libphdi_error_t **error);

int
libphdi_image_descriptor_get_utf8_filename(libphdi_image_descriptor_t *image_descriptor,
    uint8_t *utf8_string, size_t utf8_string_size,
    libphdi_error_t **error);

int
libphdi_image_descriptor_get_utf16_filename_size(libphdi_image_descriptor_t *image_descriptor,
    size_t *utf16_string_size, libphdi_error_t **error);

int
libphdi_image_descriptor_get_utf16_filename(libphdi_image_descriptor_t *image_descriptor,
    uint16_t *utf16_string, size_t utf16_string_size,
    libphdi_error_t **error);

πŸ“ Snapshot functions

int
libphdi_snapshot_free(libphdi_snapshot_t **snapshot,
    libphdi_error_t **error);

int
libphdi_snapshot_get_identifier(libphdi_snapshot_t *snapshot,
    uint8_t *guid_data, size_t guid_data_size, libphdi_error_t **error);

int
libphdi_snapshot_get_parent_identifier(libphdi_snapshot_t *snapshot,
    uint8_t *guid_data, size_t guid_data_size, libphdi_error_t **error);

πŸ’œ DESCRIPTION πŸ’œ

okay so the one function that gets its own little paragraph here is libphdi_get_version() β€” it's the glow-up function, bestie. you use it to retrieve the library version. that's it, that's the whole vibe ✨


🌈 RETURN VALUES 🌈

ngl this part is short but important. most of the functions return NULL or -1 when something goes wrong β€” which one you get depends on the return type of the function, so pay attention πŸ‘€

for the actual return values, go look at libphdi.h itself. she's the source of truth, periodt πŸ’…


🧚 ENVIRONMENT 🧚

None

literally nothing. no env vars. the environment is minding its own business 🫢


πŸ“ FILES πŸ“

None

no files either. clean. pristine. iconic.


πŸ“ NOTES πŸ“

okay so here's the tea β˜• libphdi can be compiled with wide character support (wchar_t).

to compile libphdi with wide character support, use:

./configure --enable-wide-character-type=yes

or define:

_UNICODE

or:

UNICODE

during compilation.

LIBPHDI_WIDE_CHARACTER_TYPE in libphdi/features.h can be used to determine if libphdi was compiled with wide character support. that's your vibe check right there πŸ”


πŸ› BUGS πŸ›

found a bug? any kind? bestie, please report it on the project issue tracker, we're begging πŸ™

https://github.com/libyal/libphdi/issues


πŸ‘‘ AUTHOR πŸ‘‘

these man pages are generated from libphdi.h. so like, the header wrote its own autobiography, we're just the messengers πŸ’β€β™€οΈ


Copyright (C) 2015-2024, Joachim Metz <joachim.metz@gmail.com>.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

no cap: NO warranty. not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. read that again, bestie 😭

πŸ¦‹ SEE ALSO πŸ¦‹

  • the libphdi.h include file

and that's the whole page, bestie!! πŸŽ€ you ate that. this was libphdi, section 3, dated July 8, 2022 β€” go forth and read your Parallels disk images responsibly πŸ’–βœ¨πŸ«Ά