Scroll to navigation

LIBWRC(3) Library Functions Manual LIBWRC(3)

NAME

libwrc.hLibrary to access the Windows Resource Compiler (WRC) format

SYNOPSIS

#include <libwrc.h>

Support functions


const char *
libwrc_get_version( void);

int
libwrc_get_access_flags_read( void);

int
libwrc_get_codepage( int *codepage, libwrc_error_t **error);

int
libwrc_set_codepage( int codepage, libwrc_error_t **error);

Notify functions


void
libwrc_notify_set_verbose( int verbose);

int
libwrc_notify_set_stream( FILE *stream, libwrc_error_t **error);

int
libwrc_notify_stream_open( const char *filename, libwrc_error_t **error);

int
libwrc_notify_stream_close( libwrc_error_t **error);

Error functions


void
libwrc_error_free( libwrc_error_t **error);

int
libwrc_error_fprint( libwrc_error_t *error, FILE *stream);

int
libwrc_error_sprint( libwrc_error_t *error, char *string, size_t size);

int
libwrc_error_backtrace_fprint( libwrc_error_t *error, FILE *stream);

int
libwrc_error_backtrace_sprint( libwrc_error_t *error, char *string, size_t size);

Stream functions


int
libwrc_stream_initialize( libwrc_stream_t **stream, libwrc_error_t **error);

int
libwrc_stream_free( libwrc_stream_t **stream, libwrc_error_t **error);

int
libwrc_stream_signal_abort( libwrc_stream_t *stream, libwrc_error_t **error);

int
libwrc_stream_open( libwrc_stream_t *stream, const char *filename, int access_flags, libwrc_error_t **error);

int
libwrc_stream_close( libwrc_stream_t *stream, libwrc_error_t **error);

int
libwrc_stream_get_ascii_codepage( libwrc_stream_t *stream, int *ascii_codepage, libwrc_error_t **error);

int
libwrc_stream_set_ascii_codepage( libwrc_stream_t *stream, int ascii_codepage, libwrc_error_t **error);

int
libwrc_stream_get_virtual_address( libwrc_stream_t *stream, uint32_t *virtual_address, libwrc_error_t **error);

int
libwrc_stream_set_virtual_address( libwrc_stream_t *stream, uint32_t virtual_address, libwrc_error_t **error);

int
libwrc_stream_get_number_of_resources( libwrc_stream_t *stream, int *number_of_resources, libwrc_error_t **error);

int
libwrc_stream_get_resource_by_index( libwrc_stream_t *stream, int resource_index, libwrc_resource_t **resource, libwrc_error_t **error);

int
libwrc_stream_get_resource_by_identifier( libwrc_stream_t *stream, uint32_t identifier, libwrc_resource_t **resource, libwrc_error_t **error);

int
libwrc_stream_get_resource_by_type( libwrc_stream_t *stream, int type, libwrc_resource_t **resource, libwrc_error_t **error);

int
libwrc_stream_get_resource_by_utf8_name( libwrc_stream_t *stream, const uint8_t *utf8_string, size_t utf8_string_length, libwrc_resource_t **resource, libwrc_error_t **error);

int
libwrc_stream_get_resource_by_utf16_name( libwrc_stream_t *stream, const uint16_t *utf16_string, size_t utf16_string_length, libwrc_resource_t **resource, libwrc_error_t **error);

Available when compiled with wide character string support:


int
libwrc_stream_open_wide( libwrc_stream_t *stream, const wchar_t *filename, int access_flags, libwrc_error_t **error);

Available when compiled with libbfio support:


int
libwrc_stream_open_file_io_handle( libwrc_stream_t *stream, libbfio_handle_t *file_io_handle, int access_flags, libwrc_error_t **error);

Resource functions


int
libwrc_resource_free( libwrc_resource_t **resource, libwrc_error_t **error);

int
libwrc_resource_get_identifier( libwrc_resource_t *resource, uint32_t *identifier, libwrc_error_t **error);

int
libwrc_resource_get_utf8_name_size( libwrc_resource_t *resource, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_resource_get_utf8_name( libwrc_resource_t *resource, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_resource_get_utf16_name_size( libwrc_resource_t *resource, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_resource_get_utf16_name( libwrc_resource_t *resource, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

int
libwrc_resource_get_type( libwrc_resource_t *resource, int *type, libwrc_error_t **error);

int
libwrc_resource_get_number_of_items( libwrc_resource_t *resource, int *number_of_items, libwrc_error_t **error);

int
libwrc_resource_get_item_by_index( libwrc_resource_t *resource, int item_index, libwrc_resource_item_t **resource_item, libwrc_error_t **error);

Resource item functions


int
libwrc_resource_item_free( libwrc_resource_item_t **resource_item, libwrc_error_t **error);

int
libwrc_resource_item_get_identifier( libwrc_resource_item_t *resource_item, uint32_t *identifier, libwrc_error_t **error);

int
libwrc_resource_item_get_utf8_name_size( libwrc_resource_item_t *resource_item, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_resource_item_get_utf8_name( libwrc_resource_item_t *resource_item, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_resource_item_get_utf16_name_size( libwrc_resource_item_t *resource_item, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_resource_item_get_utf16_name( libwrc_resource_item_t *resource_item, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

ssize_t
libwrc_resource_item_read_buffer( libwrc_resource_item_t *resource_item, uint8_t *buffer, size_t size, libwrc_error_t **error);

off64_t
libwrc_resource_item_seek_offset( libwrc_resource_item_t *resource_item, off64_t offset, int whence, libwrc_error_t **error);

int
libwrc_resource_item_get_offset( libwrc_resource_item_t *resource_item, off64_t *offset, libwrc_error_t **error);

int
libwrc_resource_item_get_size( libwrc_resource_item_t *resource_item, uint32_t *size, libwrc_error_t **error);

int
libwrc_resource_item_get_number_of_sub_items( libwrc_resource_item_t *resource_item, int *number_of_sub_items, libwrc_error_t **error);

int
libwrc_resource_item_get_sub_item_by_index( libwrc_resource_item_t *resource_item, int sub_item_index, libwrc_resource_item_t **resource_sub_item, libwrc_error_t **error);

Manifest resource functions


int
libwrc_manifest_resource_initialize( libwrc_manifest_resource_t **manifest_resource, libwrc_error_t **error);

int
libwrc_manifest_resource_free( libwrc_manifest_resource_t **manifest_resource, libwrc_error_t **error);

int
libwrc_manifest_resource_read( libwrc_manifest_resource_t *manifest_resource, const uint8_t *data, size_t data_size, libwrc_error_t **error);

int
libwrc_manifest_resource_get_utf8_string_size( libwrc_manifest_resource_t *manifest_resource, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_manifest_resource_get_utf8_string( libwrc_manifest_resource_t *manifest_resource, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_manifest_resource_get_utf16_string_size( libwrc_manifest_resource_t *manifest_resource, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_manifest_resource_get_utf16_string( libwrc_manifest_resource_t *manifest_resource, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

Message table (MESSAGETABLE) resource functions


int
libwrc_message_table_resource_initialize( libwrc_message_table_resource_t **message_table_resource, libwrc_error_t **error);

int
libwrc_message_table_resource_free( libwrc_message_table_resource_t **message_table_resource, libwrc_error_t **error);

int
libwrc_message_table_resource_read( libwrc_message_table_resource_t *message_table_resource, const uint8_t *data, size_t data_size, int ascii_codepage, libwrc_error_t **error);

int
libwrc_message_table_resource_get_number_of_messages( libwrc_message_table_resource_t *message_table_resource, int *number_of_messages, libwrc_error_t **error);

int
libwrc_message_table_resource_get_identifier( libwrc_message_table_resource_t *message_table_resource, int message_index, uint32_t *message_identifier, libwrc_error_t **error);

int
libwrc_message_table_resource_get_index_by_identifier( libwrc_message_table_resource_t *message_table_resource, uint32_t message_identifier, int *message_index, libwrc_error_t **error);

int
libwrc_message_table_resource_get_utf8_string_size( libwrc_message_table_resource_t *message_table_resource, int message_index, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_message_table_resource_get_utf8_string( libwrc_message_table_resource_t *message_table_resource, int message_index, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_message_table_resource_get_utf16_string_size( libwrc_message_table_resource_t *message_table_resource, int message_index, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_message_table_resource_get_utf16_string( libwrc_message_table_resource_t *message_table_resource, int message_index, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

MUI resource functions


int
libwrc_mui_resource_initialize( libwrc_mui_resource_t **mui_resource, libwrc_error_t **error);

int
libwrc_mui_resource_free( libwrc_mui_resource_t **mui_resource, libwrc_error_t **error);

int
libwrc_mui_resource_read( libwrc_mui_resource_t *mui_resource, const uint8_t *data, size_t data_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_file_type( libwrc_mui_resource_t *mui_resource, uint32_t *file_type, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf8_main_name_size( libwrc_mui_resource_t *mui_resource, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf8_main_name( libwrc_mui_resource_t *mui_resource, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf16_main_name_size( libwrc_mui_resource_t *mui_resource, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf16_main_name( libwrc_mui_resource_t *mui_resource, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf8_mui_name_size( libwrc_mui_resource_t *mui_resource, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf8_mui_name( libwrc_mui_resource_t *mui_resource, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf16_mui_name_size( libwrc_mui_resource_t *mui_resource, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf16_mui_name( libwrc_mui_resource_t *mui_resource, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf8_language_size( libwrc_mui_resource_t *mui_resource, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf8_language( libwrc_mui_resource_t *mui_resource, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf16_language_size( libwrc_mui_resource_t *mui_resource, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf16_language( libwrc_mui_resource_t *mui_resource, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf8_fallback_language_size( libwrc_mui_resource_t *mui_resource, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf8_fallback_language( libwrc_mui_resource_t *mui_resource, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf16_fallback_language_size( libwrc_mui_resource_t *mui_resource, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_mui_resource_get_utf16_fallback_language( libwrc_mui_resource_t *mui_resource, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

String table (STRINGTABLE) resource functions


int
libwrc_string_table_resource_initialize( libwrc_string_table_resource_t **string_table_resource, libwrc_error_t **error);

int
libwrc_string_table_resource_free( libwrc_string_table_resource_t **string_table_resource, libwrc_error_t **error);

int
libwrc_string_table_resource_read( libwrc_string_table_resource_t *string_table_resource, const uint8_t *data, size_t data_size, uint32_t base_identifier, libwrc_error_t **error);

int
libwrc_string_table_resource_get_number_of_strings( libwrc_string_table_resource_t *string_table_resource, int *number_of_strings, libwrc_error_t **error);

int
libwrc_string_table_resource_get_identifier( libwrc_string_table_resource_t *string_table_resource, int string_index, uint32_t *string_identifier, libwrc_error_t **error);

int
libwrc_string_table_resource_get_index_by_identifier( libwrc_string_table_resource_t *string_table_resource, uint32_t string_identifier, int *string_index, libwrc_error_t **error);

int
libwrc_string_table_resource_get_utf8_string_size( libwrc_string_table_resource_t *string_table_resource, int string_index, size_t *utf8_string_size, libwrc_error_t **error);

int
libwrc_string_table_resource_get_utf8_string( libwrc_string_table_resource_t *string_table_resource, int string_index, uint8_t *utf8_string, size_t utf8_string_size, libwrc_error_t **error);

int
libwrc_string_table_resource_get_utf16_string_size( libwrc_string_table_resource_t *string_table_resource, int string_index, size_t *utf16_string_size, libwrc_error_t **error);

int
libwrc_string_table_resource_get_utf16_string( libwrc_string_table_resource_t *string_table_resource, int string_index, uint16_t *utf16_string, size_t utf16_string_size, libwrc_error_t **error);

Version information (VERSIONINFO) resource functions


int
libwrc_version_information_resource_initialize( libwrc_version_information_resource_t **version_information_resource, libwrc_error_t **error);

int
libwrc_version_information_resource_free( libwrc_version_information_resource_t **version_information_resource, libwrc_error_t **error);

int
libwrc_version_information_resource_read( libwrc_version_information_resource_t *version_information_resource, const uint8_t *data, size_t data_size, libwrc_error_t **error);

int
libwrc_version_information_resource_get_file_version( libwrc_version_information_resource_t *version_information_resource, uint64_t *file_version, libwrc_error_t **error);

int
libwrc_version_information_resource_get_product_version( libwrc_version_information_resource_t *version_information_resource, uint64_t *product_version, libwrc_error_t **error);

DESCRIPTION

The () function is used to retrieve the library version.

RETURN VALUES

Most of the functions return NULL or -1 on error, dependent on the return type. For the actual return values see <libwrc.h>.

ENVIRONMENT

None

FILES

None

NOTES

libwrc can be compiled with wide character support (wchar_t).

To compile libwrc with wide character support use: ./configure --enable-wide-character-type
or define: _UNICODE
or UNICODE
during compilation.

LIBWRC_WIDE_CHARACTER_TYPE
in libwrc/features.h can be used to determine if libwrc was compiled with wide character support.

SEE ALSO

<libwrc.h>

AUTHORS

Joachim Metz <joachim.metz@gmail.com>

BUGS

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

COPYRIGHT

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

June 25, 2026 Linux 6.4.0-150700.53.73-default