⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unrardll.txt

📁 仿WinRar解压缩VB版 这个示例就是利用这个动态链接库进行的一些操作
💻 TXT
📖 第 1 页 / 共 2 页
字号:

    UnRAR.dll Manual
    ~~~~~~~~~~~~~~~~

    UnRAR.dll is a 32-bit Windows dynamic-link library which provides
 file extraction from RAR archives.


    Exported functions

====================================================================
HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData)
====================================================================

Description
~~~~~~~~~~~
  Open RAR archive and allocate memory structures

Parameters
~~~~~~~~~~
ArchiveData       Points to RAROpenArchiveData structure

struct RAROpenArchiveData
{
  char *ArcName;
  UINT OpenMode;
  UINT OpenResult;
  char *CmtBuf;
  UINT CmtBufSize;
  UINT CmtSize;
  UINT CmtState;
};

Structure fields:

ArcName
  Input parameter which should point to zero terminated string 
  containing the archive name. 

OpenMode
  Input parameter.

  Possible values

  RAR_OM_LIST
    Open archive for reading file headers only.

  RAR_OM_EXTRACT
    Open archive for testing and extracting files.

  RAR_OM_LIST_INCSPLIT
    Open archive for reading file headers only. If you open an archive
    in such mode, RARReadHeader[Ex] will return all file headers,
    including those with "file continued from previous volume" flag.
    In case of RAR_OM_LIST such headers are automatically skipped.
    So if you process RAR volumes in RAR_OM_LIST_INCSPLIT mode, you will
    get several file header records for same file if file is split between
    volumes. For such files only the last file header record will contain
    the correct file CRC and if you wish to get the correct packed size,
    you need to sum up packed sizes of all parts.

OpenResult
  Output parameter.

  Possible values

  0                     Success
  ERAR_NO_MEMORY        Not enough memory to initialize data structures
  ERAR_BAD_DATA         Archive header broken
  ERAR_BAD_ARCHIVE      File is not valid RAR archive
  ERAR_UNKNOWN_FORMAT   Unknown encryption used for archive headers
  ERAR_EOPEN            File open error

CmtBuf
  Input parameter which should point to the buffer for archive 
  comments. Maximum comment size is limited to 64Kb. Comment text is 
  zero terminated. If the comment text is larger than the buffer 
  size, the comment text will be truncated. If CmtBuf is set to 
  NULL, comments will not be read. 

CmtBufSize
  Input parameter which should contain size of buffer for archive
  comments.

CmtSize
  Output parameter containing size of comments actually read into the
  buffer, cannot exceed CmtBufSize.

CmtState
  Output parameter.

  Possible values

  0                     comments not present
  1                     Comments read completely
  ERAR_NO_MEMORY        Not enough memory to extract comments
  ERAR_BAD_DATA         Broken comment
  ERAR_UNKNOWN_FORMAT   Unknown comment format
  ERAR_SMALL_BUF        Buffer too small, comments not completely read

Return values
~~~~~~~~~~~~~
  Archive handle or NULL in case of error


========================================================================
HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData)
========================================================================

Description
~~~~~~~~~~~
  Similar to RAROpenArchive, but uses RAROpenArchiveDataEx structure
  allowing to specify Unicode archive name and returning information
  about archive flags.

Parameters
~~~~~~~~~~
ArchiveData       Points to RAROpenArchiveDataEx structure

struct RAROpenArchiveDataEx
{
  char         *ArcName;
  wchar_t      *ArcNameW;
  unsigned int OpenMode;
  unsigned int OpenResult;
  char         *CmtBuf;
  unsigned int CmtBufSize;
  unsigned int CmtSize;
  unsigned int CmtState;
  unsigned int Flags;
  unsigned int Reserved[32];
};

Structure fields:

ArcNameW
  Input parameter which should point to zero terminated Unicode string
  containing the archive name or NULL if Unicode name is not specified.

Flags
  Output parameter. Combination of bit flags.

  Possible values

    0x0001  - Volume attribute (archive volume)
    0x0002  - Archive comment present
    0x0004  - Archive lock attribute
    0x0008  - Solid attribute (solid archive)
    0x0010  - New volume naming scheme ('volname.partN.rar')
    0x0020  - Authenticity information present
    0x0040  - Recovery record present
    0x0080  - Block headers are encrypted
    0x0100  - First volume (set only by RAR 3.0 and later)

Reserved[32]
  Reserved for future use. Must be zero.

Information on other structure fields and function return values
is available above, in RAROpenArchive function description.


====================================================================
int PASCAL RARCloseArchive(HANDLE hArcData)
====================================================================

Description
~~~~~~~~~~~
  Close RAR archive and release allocated memory. It must be called when
  archive processing is finished, even if the archive processing was stopped
  due to an error.

Parameters
~~~~~~~~~~
hArcData
  This parameter should contain the archive handle obtained from the
  RAROpenArchive function call.

Return values
~~~~~~~~~~~~~
  0                     Success
  ERAR_ECLOSE           Archive close error


====================================================================
int PASCAL RARReadHeader(HANDLE hArcData,
                         struct RARHeaderData *HeaderData)
====================================================================

Description
~~~~~~~~~~~
  Read header of file in archive.

Parameters
~~~~~~~~~~
hArcData
  This parameter should contain the archive handle obtained from the
  RAROpenArchive function call.

HeaderData
  It should point to RARHeaderData structure:

struct RARHeaderData
{
  char ArcName[260];
  char FileName[260];
  UINT Flags;
  UINT PackSize;
  UINT UnpSize;
  UINT HostOS;
  UINT FileCRC;
  UINT FileTime;
  UINT UnpVer;
  UINT Method;
  UINT FileAttr;
  char *CmtBuf;
  UINT CmtBufSize;
  UINT CmtSize;
  UINT CmtState;
};

Structure fields:

ArcName
  Output parameter which contains a zero terminated string of the
  current archive name.  May be used to determine the current volume 
  name. 

FileName
  Output parameter which contains a zero terminated string of the 
  file name in OEM (DOS) encoding.

Flags
  Output parameter which contains file flags:

  0x01 - file continued from previous volume
  0x02 - file continued on next volume
  0x04 - file encrypted with password
  0x08 - file comment present
  0x10 - compression of previous files is used (solid flag)

  bits 7 6 5

       0 0 0    - dictionary size   64 Kb
       0 0 1    - dictionary size  128 Kb
       0 1 0    - dictionary size  256 Kb
       0 1 1    - dictionary size  512 Kb
       1 0 0    - dictionary size 1024 Kb
       1 0 1    - dictionary size 2048 KB
       1 1 0    - dictionary size 4096 KB
       1 1 1    - file is directory

  Other bits are reserved.

PackSize
  Output parameter means packed file size or size of the
  file part if file was split between volumes.

UnpSize
  Output parameter - unpacked file size.

HostOS
  Output parameter - operating system used for archiving:

  0 - MS DOS;
  1 - OS/2.
  2 - Win32
  3 - Unix

FileCRC
  Output parameter which contains unpacked file CRC. In case of file parts
  split between volumes only the last part contains the correct CRC
  and it is accessible only in RAR_OM_LIST_INCSPLIT listing mode.

FileTime
  Output parameter - contains date and time in standard MS DOS format.

UnpVer
  Output parameter - RAR version needed to extract file.
  It is encoded as 10 * Major version + minor version.

Method
  Output parameter - packing method.

FileAttr
  Output parameter - file attributes.

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

/*
 * Input parameter which should point to the buffer for file
 * comments. Maximum comment size is limited to 64Kb. Comment text is 
 * a zero terminated string in OEM encoding. If the comment text is
 * larger than the buffer size, the comment text will be truncated.
 * If CmtBuf is set to NULL, comments will not be read. 
 */

CmtBufSize
  Input parameter which should contain size of buffer for archive
  comments.

CmtSize
  Output parameter containing size of comments actually read into the

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -