List of unrar.dll API changes. We do not include performance and reliability
improvements into this list, but this library and RAR/UnRAR tools share
the same source code. So the latest version of unrar.dll usually contains
same decompression algorithm changes as the latest UnRAR version.
============================================================================

--  6 July 2015

New RedirType, RedirName, RedirNameSize, DirTarget fields of RARHeaderDataEx
structure provide information about file system redirection headers.

Please be sure to fill either the entire RARHeaderDataEx structure
or at least its Reserved field with zeroes before passing to RARReadHeaderEx.

RAR_DLL_VERSION is incremented to 7.


--  5 November 2013

OpenResult field of RAROpenArchiveData and RAROpenArchiveDataEx
structures can return the new ERAR_BAD_PASSWORD error code.
This code can be returned only for archives with encrypted headers
in RAR 5.0 format.


--  29 October 2013

RARProcessFile and RARProcessFileW can return the new ERAR_BAD_PASSWORD
error code. This code can be returned only for archives in RAR 5.0 format.


--  10 September 2013

RARProcessFile and RARProcessFileW can return two additional error codes:
ERAR_NO_MEMORY and ERAR_EREFERENCE. See appropriate help topics for details.


--  24 December 2012

1) Stricter requirements for return value of callback function.
You need to return -1 to cancel the operation, 1 if you processed an event
and want to continue and 0 for those events which you do not need to process
or do not know how to process including unknown event types.

Earlier versions of documentation told about "zero or positive value" to
continue, but it was too broad and did not allow unrar.dll to detect
if application actually processed the event.

2) RARHeaderDataEx structure stores the compression dictionary size
in kilobytes in DictSize field instead of Flags. RAR 5.0 dictionary
maximum size is too big to fit into previously used Flags bits. 

Old RARHeaderData structure does not provide the dictionary size at all.

3) RARHeaderDataEx structure contains new fields HashType and Hash fields,
which can be used to detect the type of file checksum and obtain BLAKE2
checksum for RAR_HASH_BLAKE2 HashType.

4) new RHDF_DIRECTORY (0x20) flag in RARHeaderData and RARHeaderDataEx
structures indicates the directory entry.


--  26 April 2012

New callback events UCM_CHANGEVOLUMEW and UCM_NEEDPASSWORDW are added.
You can use them to set Unicode name of next volume and Unicode password.

Also now it is recommended to return 0 in callback function for those event
types which you do not process including unknown event types.

Minimum supported Windows version is Windows XP.


--   1 March 2011

Minimum supported Windows version is Windows 2000.


--  24 November 2010

Fields Callback and UserData are added to RAROpenArchiveDataEx structure.
You can set them instead of calling RARSetCallback to define your callback
function. 

Using these two new fields, you can specify the callback function
at the same time as opening an archive and not after that, as it was in case
of RARSetCallback. It allows RAROpenArchiveEx to read the archive comment
in archive with encrypted headers. It could not be done in case of
RARSetCallback call, because a password was not available yet at the moment
of reading the comment. So specifying the callback function
in RAROpenArchiveDataEx is more preferable solution than RARSetCallback,
though RARSetCallback is supported by library too.

Space for these two new structure members was taken from Reserved array.
So it should not affect the compatibility provided that Reserved array
in RAROpenArchiveDataEx was set to zero as suggested in documentation.

Added the information in user manual that Reserved array in RARHeaderDataEx
structure must be filled with zeroes. While it is not important
in the current unrar.dll version, it may become important in the future.

Value returned by RARGetDllVersion and RAR_DLL_VERSION in unrar.h
are incremented to 5.

UnRAR.dll manual converted to HTML format and moved to Documentation folder.


--  18 January 2008

All LONG parameters of CallbackProc function were changed
to LPARAM type for 64 bit mode compatibility.


--  12 December 2007

Added new RAR_OM_LIST_INCSPLIT open mode for function RAROpenArchive.


--  14 August 2007

Added NoCrypt\unrar_nocrypt.dll without decryption code for those
applications where presence of encryption or decryption code is not
allowed because of legal restrictions.


--  14 December 2006

Added ERAR_MISSING_PASSWORD error type. This error is returned
if empty password is specified for encrypted file.


--  12 June 2003

Added RARProcessFileW function, Unicode version of RARProcessFile


--  9 August 2002

Added RAROpenArchiveEx function allowing to specify Unicode archive
name and get archive flags.


--  24 January 2002

Added RARReadHeaderEx function allowing to read Unicode file names
and 64 bit file sizes.


--  23 January 2002

Added ERAR_UNKNOWN error type (it is used for all errors which
do not have special ERAR code yet) and UCM_NEEDPASSWORD callback
message.

Unrar.dll automatically opens all next volumes not only when extracting,
but also in RAR_OM_LIST mode.


--  27 November 2001

RARSetChangeVolProc and RARSetProcessDataProc are replaced by
the single callback function installed with RARSetCallback.
Unlike old style callbacks, the new function accepts the user defined
parameter. Unrar.dll still supports RARSetChangeVolProc and
RARSetProcessDataProc for compatibility purposes, but if you write
a new application, better use RARSetCallback.

File comments support is not implemented in the new DLL version yet.
Now CmtState is always 0.


--  13 August 2001

Added RARGetDllVersion function, so you may distinguish old unrar.dll,
which used C style callback functions and the new one with PASCAL callbacks.


--  10 May 2001

Callback functions in RARSetChangeVolProc and RARSetProcessDataProc
use PASCAL style call convention now.
