libvshadow(3)

πŸ“¦
this version Β· 2 versions
, in debian trixie, opensuse-leap 16.0, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– libvshadow β€” the manual, but make it cute πŸ’–

okay so bestie. you're looking at the manual page for libvshadow(3), from the Library Functions Manual. it's a whole library, it's iconic, and we're gonna go through it together. grab a snack πŸ“


✨ NAME ✨

libvshadow.h β€” the library that lets you access the Windows NT Volume Shadow Snapshot (VSS) format. yes, that VSS. the shadow-copy one. she's lowkey everywhere on Windows and now you get to read her πŸ’…


🌸 SYNOPSIS 🌸

#include <libvshadow.h>

πŸŽ€ Support functions

const char *
libvshadow_get_version(void);

int
libvshadow_get_access_flags_read(void);

int
libvshadow_get_codepage(int *codepage, libvshadow_error_t **error);

int
libvshadow_set_codepage(int codepage, libvshadow_error_t **error);

int
libvshadow_check_volume_signature(const char *filename,
    libvshadow_error_t **error);

Available when compiled with wide character string support:

int
libvshadow_check_volume_signature_wide(const wchar_t *filename,
    libvshadow_error_t **error);

Available when compiled with libbfio support:

int
libvshadow_check_volume_signature_file_io_handle(libbfio_handle_t *file_io_handle,
    libvshadow_error_t **error);

πŸ¦‹ Notify functions

void
libvshadow_notify_set_verbose(int verbose);

int
libvshadow_notify_set_stream(FILE *stream, libvshadow_error_t **error);

int
libvshadow_notify_stream_open(const char *filename,
    libvshadow_error_t **error);

int
libvshadow_notify_stream_close(libvshadow_error_t **error);

πŸ’œ Error functions

void
libvshadow_error_free(libvshadow_error_t **error);

int
libvshadow_error_fprint(libvshadow_error_t *error, FILE *stream);

int
libvshadow_error_sprint(libvshadow_error_t *error, char *string,
    size_t size);

int
libvshadow_error_backtrace_fprint(libvshadow_error_t *error,
    FILE *stream);

int
libvshadow_error_backtrace_sprint(libvshadow_error_t *error,
    char *string, size_t size);

πŸ‘‘ Volume functions

int
libvshadow_volume_initialize(libvshadow_volume_t **volume,
    libvshadow_error_t **error);

int
libvshadow_volume_free(libvshadow_volume_t **volume,
    libvshadow_error_t **error);

int
libvshadow_volume_signal_abort(libvshadow_volume_t *volume,
    libvshadow_error_t **error);

int
libvshadow_volume_open(libvshadow_volume_t *volume,
    const char *filename, int access_flags, libvshadow_error_t **error);

int
libvshadow_volume_close(libvshadow_volume_t *volume,
    libvshadow_error_t **error);

int
libvshadow_volume_get_size(libvshadow_volume_t *volume, size64_t *size,
    libvshadow_error_t **error);

int
libvshadow_volume_get_number_of_stores(libvshadow_volume_t *volume,
    int *number_of_stores, libvshadow_error_t **error);

int
libvshadow_volume_get_store(libvshadow_volume_t *volume,
    int store_index, libvshadow_store_t **store,
    libvshadow_error_t **error);

int
libvshadow_volume_get_store_identifier(libvshadow_volume_t *volume,
    int store_index, uint8_t *guid, size_t size,
    libvshadow_error_t **error);

Available when compiled with wide character string support:

int
libvshadow_volume_open_wide(libvshadow_volume_t *volume,
    const wchar_t *filename, int access_flags,
    libvshadow_error_t **error);

Available when compiled with libbfio support:

int
libvshadow_volume_open_file_io_handle(libvshadow_volume_t *volume,
    libbfio_handle_t *file_io_handle, int access_flags,
    libvshadow_error_t **error);

🧚 Store functions

int
libvshadow_store_free(libvshadow_store_t **store,
    libvshadow_error_t **error);

int
libvshadow_store_has_in_volume_data(libvshadow_store_t *store,
    libvshadow_error_t **error);

ssize_t
libvshadow_store_read_buffer(libvshadow_store_t *store, void *buffer,
    size_t buffer_size, libvshadow_error_t **error);

ssize_t
libvshadow_store_read_buffer_at_offset(libvshadow_store_t *store,
    void *buffer, size_t buffer_size, off64_t offset,
    libvshadow_error_t **error);

off64_t
libvshadow_store_seek_offset(libvshadow_store_t *store, off64_t offset,
    int whence, libvshadow_error_t **error);

int
libvshadow_store_get_offset(libvshadow_store_t *store, off64_t *offset,
    libvshadow_error_t **error);

int
libvshadow_store_get_size(libvshadow_store_t *store, size64_t *size,
    libvshadow_error_t **error);

int
libvshadow_store_get_volume_size(libvshadow_store_t *store,
    size64_t *volume_size, libvshadow_error_t **error);

int
libvshadow_store_get_identifier(libvshadow_store_t *store,
    uint8_t *guid, size_t size, libvshadow_error_t **error);

int
libvshadow_store_get_creation_time(libvshadow_store_t *store,
    uint64_t *filetime, libvshadow_error_t **error);

int
libvshadow_store_get_copy_identifier(libvshadow_store_t *store,
    uint8_t *guid, size_t size, libvshadow_error_t **error);

int
libvshadow_store_get_copy_set_identifier(libvshadow_store_t *store,
    uint8_t *guid, size_t size, libvshadow_error_t **error);

int
libvshadow_store_get_attribute_flags(libvshadow_store_t *store,
    uint32_t *attribute_flags, libvshadow_error_t **error);

int
libvshadow_store_get_number_of_blocks(libvshadow_store_t *store,
    int *number_of_blocks, libvshadow_error_t **error);

int
libvshadow_store_get_block_by_index(libvshadow_store_t *store,
    int block_index, libvshadow_block_t **block,
    libvshadow_error_t **error);

Available when compiled with libbfio support:

ssize_t
libvshadow_store_read_buffer_from_file_io_handle(libvshadow_store_t *store,
    libbfio_handle_t *file_io_handle, void *buffer, size_t buffer_size,
    libvshadow_error_t **error);

🌈 Block functions

int
libvshadow_block_free(libvshadow_block_t **block,
    libvshadow_error_t **error);

int
libvshadow_block_get_original_offset(libvshadow_block_t *block,
    off64_t *original_offset, libvshadow_error_t **error);

int
libvshadow_block_get_relative_offset(libvshadow_block_t *block,
    off64_t *relative_offset, libvshadow_error_t **error);

int
libvshadow_block_get_offset(libvshadow_block_t *block, off64_t *offset,
    libvshadow_error_t **error);

int
libvshadow_block_get_values(libvshadow_block_t *block,
    off64_t *original_offset, off64_t *relative_offset, off64_t *offset,
    uint32_t *flags, uint32_t *bitmap, libvshadow_error_t **error);

πŸ’€ DESCRIPTION πŸ’€

so the one thing the docs actually spell out here: the libvshadow_get_version() function is used to retrieve the library version. that's it. that's the paragraph. she said "one job" and did it ✨

(ngl the rest of the functions' descriptions live in libvshadow.h, bestie. the header is the main character here.)


🫢 RETURN VALUES 🫢

most of these functions hand back NULL or -1 when something goes wrong β€” depends on what the return type even is. for the actual, exact return values? go look at libvshadow.h. she has the receipts πŸ’…


πŸ™ˆ ENVIRONMENT πŸ™ˆ

None


πŸŽ€ FILES πŸŽ€

None


⭐ NOTES ⭐

  • libvshadow can be compiled with wide character support (wchar_t).
  • to compile libvshadow with wide character support, use:
./configure --enable-wide-character-type=yes

or define:

_UNICODE

or:

UNICODE

during compilation.

  • LIBVSHADOW_WIDE_CHARACTER_TYPE in libvshadow/features.h can be used to determine if libvshadow was compiled with wide character support.

😭 BUGS 😭

please report bugs of any kind on the project issue tracker: https://github.com/libyal/libvshadow/issues

(they want to hear from you, fr fr 🫢)


πŸ‘‘ AUTHOR πŸ‘‘

these man pages are generated from libvshadow.h.


Copyright (C) 2011-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.

like... no warranty at all. zero. none. πŸ’€


πŸ’– SEE ALSO πŸ’–

  • the libvshadow.h include file

anyway that's the whole page bestie, you ate πŸŽ€βœ¨

signing off: this was libvshadow(3), and the footer says libvshadow, dated March 5, 2019, from the libvshadow source β€” so that's your version and date, mwah πŸ’…πŸ’–

πŸ“¦ where this page comes from