Decompressing a file with LZNV DLL
6.2 Decompressing a file with LZNV DLL
6.2 Decompressing (decoding) a file using the LZNV DLL
The code is available in function _loadDLL from LZNV_DLL_Tester.cpp
#include <LZNV_Defines.h> // load header file from predefined include paths
/// \brief LZNV_Decode_File performs a straight forward file decompression without the need of any prior buffer manipulation.
/// \note The function performs internal buffering. If you want to perform your own buffering, please use LZNV_Decode_File_wBuffer.
/// \param[in] _wchr_filename_to_decompress: Input file path to decompress. Unicode WCHAR.
/// \param[in] _wchr_output_filename: Output file path to decompress. This file will be a replica of the _wchr_filename_to_compress. See LZNV_Encode_File function. Unicode WCHAR.
/// \return returns NO_ERROR (0) in case of no errors or one of the error codes defined in LZNV_Defines.h header file
/// other possible values:
/// - _LZNV_ERROR_INVALID_COMPRESSION_METHOD
/// - _LZNV_ERROR_INVALID_BUFFER_SIZE
/// - _LZNV_ERROR_EXPORTED_MAIN_FUNC_NOT_FOUND
/// - _LZNV_ERROR_INVALID_PROCESS_SIZE
///
int32_t LZNV_Decode_File(const uint8_t _encoding_method, const wchar_t* _wchr_filename_to_decompress, const wchar_t* _wchr_output_filename)
{
int32_t _res = _LZNV_NO_ERROR_;
ASSERT(_p_LZNV_DLL_Main_File_funct);
if (!_p_LZNV_DLL_Main_File_funct) {
wprintf(L"\n LZNV DLL Not Loaded? Aborting...\n\n");
return 1;
}
ASSERT(_wchr_output_filename);
ASSERT(_wchr_filename_to_decompress);
if ((!_wchr_filename_to_decompress) || (!_wchr_output_filename))
{
wprintf(L"\n LZNV DLL passed NULL parameters..\n\n");
return _LZNV_ERROR_INVALID_FILE_PATH_PARAMS;
}
{
LZNV_FILE_COMMAND_PARAMS _lznv_file_command = { 0 };
_lznv_file_command._encoding_method = _encoding_method;
_lznv_file_command._command_to_execute = _LZNV_COMMAND_DECODE;
_lznv_file_command._cpu_priority_level = _LZNV_NORMAL_PRIORITY_CLASS;
ASSERT(_wchr_filename_to_decompress);
wcsncpy_s(_lznv_file_command._source_file_path, _wchr_filename_to_decompress, _LZNV_MAXPATH_);
ASSERT(_wchr_output_filename);
wcsncpy_s(_lznv_file_command._target_file_path, _wchr_output_filename, _LZNV_MAXPATH_);
int64_t s = _get_ms(); // use a high performance counter
_res = (*_p_LZNV_DLL_Main_File_funct)(_lznv_file_command);
int64_t e = _get_ms();
// Show stats ...
}
return _res;
}