UNRARDLL.TXT
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:17k
源码类别:

多媒体编程

开发平台:

Visual C++

  1.     unRAR.dll Manual
  2.     ~~~~~~~~~~~~~~~~
  3.     UNRAR.DLL is a 32-bit Windows dynamic-link library which provides
  4.  file extraction from RAR archives.
  5.     Exported functions
  6. ====================================================================
  7. HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData)
  8. ====================================================================
  9. Description
  10. ~~~~~~~~~~~
  11.   Open RAR archive and allocate memory structures
  12. Parameters
  13. ~~~~~~~~~~
  14. ArchiveData       Points to RAROpenArchiveData structure
  15. struct RAROpenArchiveData
  16. {
  17.   char *ArcName;
  18.   UINT OpenMode;
  19.   UINT OpenResult;
  20.   char *CmtBuf;
  21.   UINT CmtBufSize;
  22.   UINT CmtSize;
  23.   UINT CmtState;
  24. };
  25. Structure fields:
  26. ArcName
  27.   Input parameter which should point to zero terminated string 
  28.   containing the archive name. 
  29. OpenMode
  30.   Input parameter.
  31.   Possible values
  32.   RAR_OM_LIST           Open archive for reading file headers only
  33.   RAR_OM_EXTRACT        Open archive for testing and extracting files
  34. OpenResult
  35.   Output parameter.
  36.   Possible values
  37.   0                     Success
  38.   ERAR_NO_MEMORY        Not enough memory to initialize data structures
  39.   ERAR_BAD_DATA         Archive header broken
  40.   ERAR_BAD_ARCHIVE      File is not valid RAR archive
  41.   ERAR_EOPEN            File open error
  42. CmtBuf
  43.   Input parameter which should point to the buffer for archive 
  44.   comments. Maximum comment size is limited to 64Kb. Comment text is 
  45.   zero terminated. If the comment text is larger than the buffer 
  46.   size, the comment text will be truncated. If CmtBuf is set to 
  47.   NULL, comments will not be read. 
  48. CmtBufSize
  49.   Input parameter which should contain size of buffer for archive
  50.   comments.
  51. CmtSize
  52.   Output parameter containing size of comments actually read into the
  53.   buffer, cannot exceed CmtBufSize.
  54. CmtState
  55.   Output parameter.
  56.   Possible values
  57.   0                     comments not present
  58.   1                     Comments read completely
  59.   ERAR_NO_MEMORY        Not enough memory to extract comments
  60.   ERAR_BAD_DATA         Broken comment
  61.   ERAR_UNKNOWN_FORMAT   Unknown comment format
  62.   ERAR_SMALL_BUF        Buffer too small, comments not completely read
  63. Return values
  64. ~~~~~~~~~~~~~
  65.   Archive handle or NULL in case of error
  66. ========================================================================
  67. HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData)
  68. ========================================================================
  69. Description
  70. ~~~~~~~~~~~
  71.   Similar to RAROpenArchive, but uses RAROpenArchiveDataEx structure
  72.   allowing to specify Unicode archive name and returning information
  73.   about archive flags.
  74. Parameters
  75. ~~~~~~~~~~
  76. ArchiveData       Points to RAROpenArchiveDataEx structure
  77. struct RAROpenArchiveDataEx
  78. {
  79.   char         *ArcName;
  80.   wchar_t      *ArcNameW;
  81.   unsigned int OpenMode;
  82.   unsigned int OpenResult;
  83.   char         *CmtBuf;
  84.   unsigned int CmtBufSize;
  85.   unsigned int CmtSize;
  86.   unsigned int CmtState;
  87.   unsigned int Flags;
  88.   unsigned int Reserved[32];
  89. };
  90. Structure fields:
  91. ArcNameW
  92.   Input parameter which should point to zero terminated Unicode string
  93.   containing the archive name or NULL if Unicode name is not specified.
  94. Flags
  95.   Output parameter. Combination of bit flags.
  96.   Possible values
  97.     0x0001  - Volume attribute (archive volume)
  98.     0x0002  - Archive comment present
  99.     0x0004  - Archive lock attribute
  100.     0x0008  - Solid attribute (solid archive)
  101.     0x0010  - New volume naming scheme ('volname.partN.rar')
  102.     0x0020  - Authenticity information present
  103.     0x0040  - Recovery record present
  104.     0x0080  - Block headers are encrypted
  105.     0x0100  - First volume (set only by RAR 3.0 and later)
  106. Reserved[32]
  107.   Reserved for future use. Must be zero.
  108. Information on other structure fields and function return values
  109. is available above, in RAROpenArchive function description.
  110. ====================================================================
  111. int PASCAL RARCloseArchive(HANDLE hArcData)
  112. ====================================================================
  113. Description
  114. ~~~~~~~~~~~
  115.   Close RAR archive and release allocated memory. It must be called when
  116.   archive processing is finished, even if the archive processing was stopped
  117.   due to an error.
  118. Parameters
  119. ~~~~~~~~~~
  120. hArcData
  121.   This parameter should contain the archive handle obtained from the
  122.   RAROpenArchive function call.
  123. Return values
  124. ~~~~~~~~~~~~~
  125.   0                     Success
  126.   ERAR_ECLOSE           Archive close error
  127. ====================================================================
  128. int PASCAL RARReadHeader(HANDLE hArcData,
  129.                          struct RARHeaderData *HeaderData)
  130. ====================================================================
  131. Description
  132. ~~~~~~~~~~~
  133.   Read header of file in archive.
  134. Parameters
  135. ~~~~~~~~~~
  136. hArcData
  137.   This parameter should contain the archive handle obtained from the
  138.   RAROpenArchive function call.
  139. HeaderData
  140.   It should point to RARHeaderData structure:
  141. struct RARHeaderData
  142. {
  143.   char ArcName[260];
  144.   char FileName[260];
  145.   UINT Flags;
  146.   UINT PackSize;
  147.   UINT UnpSize;
  148.   UINT HostOS;
  149.   UINT FileCRC;
  150.   UINT FileTime;
  151.   UINT UnpVer;
  152.   UINT Method;
  153.   UINT FileAttr;
  154.   char *CmtBuf;
  155.   UINT CmtBufSize;
  156.   UINT CmtSize;
  157.   UINT CmtState;
  158. };
  159. Structure fields:
  160. ArcName
  161.   Output parameter which contains a zero terminated string of the
  162.   current archive name.  May be used to determine the current volume 
  163.   name. 
  164. FileName
  165.   Output parameter which contains a zero terminated string of the 
  166.   file name in OEM (DOS) encoding.
  167. Flags
  168.   Output parameter which contains file flags:
  169.   0x01 - file continued from previous volume
  170.   0x02 - file continued on next volume
  171.   0x04 - file encrypted with password
  172.   0x08 - file comment present
  173.   0x10 - compression of previous files is used (solid flag)
  174.   bits 7 6 5
  175.        0 0 0    - dictionary size   64 Kb
  176.        0 0 1    - dictionary size  128 Kb
  177.        0 1 0    - dictionary size  256 Kb
  178.        0 1 1    - dictionary size  512 Kb
  179.        1 0 0    - dictionary size 1024 Kb
  180.        1 0 1    - reserved
  181.        1 1 0    - reserved
  182.        1 1 1    - file is directory
  183.   Other bits are reserved.
  184. PackSize
  185.   Output parameter means packed file size or size of the
  186.   file part if file was split between volumes.
  187. UnpSize
  188.   Output parameter - unpacked file size.
  189. HostOS
  190.   Output parameter - operating system used for archiving:
  191.   0 - MS DOS;
  192.   1 - OS/2.
  193.   2 - Win32
  194.   3 - Unix
  195. FileCRC
  196.   Output parameter which contains unpacked file CRC. It should not be
  197.   used for file parts which were split between volumes.
  198. FileTime
  199.   Output parameter - contains date and time in standard MS DOS format.
  200. UnpVer
  201.   Output parameter - RAR version needed to extract file.
  202.   It is encoded as 10 * Major version + minor version.
  203. Method
  204.   Output parameter - packing method.
  205. FileAttr
  206.   Output parameter - file attributes.
  207. CmtBuf
  208.   File comments support is not implemented in the new DLL version yet.
  209.   Now CmtState is always 0.
  210. /*
  211.  * Input parameter which should point to the buffer for file
  212.  * comments. Maximum comment size is limited to 64Kb. Comment text is 
  213.  * a zero terminated string in OEM encoding. If the comment text is
  214.  * larger than the buffer size, the comment text will be truncated.
  215.  * If CmtBuf is set to NULL, comments will not be read. 
  216.  */
  217. CmtBufSize
  218.   Input parameter which should contain size of buffer for archive
  219.   comments.
  220. CmtSize
  221.   Output parameter containing size of comments actually read into the
  222.   buffer, should not exceed CmtBufSize.
  223. CmtState
  224.   Output parameter.
  225.   Possible values
  226.   0                     Absent comments
  227.   1                     Comments read completely
  228.   ERAR_NO_MEMORY        Not enough memory to extract comments
  229.   ERAR_BAD_DATA         Broken comment
  230.   ERAR_UNKNOWN_FORMAT   Unknown comment format
  231.   ERAR_SMALL_BUF        Buffer too small, comments not completely read
  232. Return values
  233. ~~~~~~~~~~~~~
  234.   0                     Success
  235.   ERAR_END_ARCHIVE      End of archive
  236.   ERAR_BAD_DATA         File header broken
  237. ====================================================================
  238. int PASCAL RARReadHeaderEx(HANDLE hArcData,
  239.                            struct RARHeaderDataEx *HeaderData)
  240. ====================================================================
  241. Description
  242. ~~~~~~~~~~~
  243.   Similar to RARReadHeader, but uses RARHeaderDataEx structure,
  244. containing information about Unicode file names and 64 bit file sizes.
  245. struct RARHeaderDataEx
  246. {
  247.   char         ArcName[1024];
  248.   wchar_t      ArcNameW[1024];
  249.   char         FileName[1024];
  250.   wchar_t      FileNameW[1024];
  251.   unsigned int Flags;
  252.   unsigned int PackSize;
  253.   unsigned int PackSizeHigh;
  254.   unsigned int UnpSize;
  255.   unsigned int UnpSizeHigh;
  256.   unsigned int HostOS;
  257.   unsigned int FileCRC;
  258.   unsigned int FileTime;
  259.   unsigned int UnpVer;
  260.   unsigned int Method;
  261.   unsigned int FileAttr;
  262.   char         *CmtBuf;
  263.   unsigned int CmtBufSize;
  264.   unsigned int CmtSize;
  265.   unsigned int CmtState;
  266.   unsigned int Reserved[1024];
  267. };
  268. ====================================================================
  269. int PASCAL RARProcessFile(HANDLE hArcData,
  270.                           int Operation,
  271.                           char *DestPath,
  272.                           char *DestName)
  273. ====================================================================
  274. Description
  275. ~~~~~~~~~~~
  276.   Performs action and moves the current position in the archive to 
  277.   the next file. Extract or test the current file from the archive 
  278.   opened in RAR_OM_EXTRACT mode. If the mode RAR_OM_LIST is set, 
  279.   then a call to this function will simply skip the archive position 
  280.   to the next file. 
  281. Parameters
  282. ~~~~~~~~~~
  283. hArcData
  284.   This parameter should contain the archive handle obtained from the
  285.   RAROpenArchive function call.
  286. Operation
  287.   File operation.
  288.   Possible values
  289.   RAR_SKIP              Move to the next file in the archive. If the 
  290.                         archive is solid and RAR_OM_EXTRACT mode was set 
  291.                         when the archive was opened, the current file will 
  292.                         be processed - the operation will be performed 
  293.                         slower than a simple seek. 
  294.   RAR_TEST              Test the current file and move to the next file in 
  295.                         the archive. If the archive was opened with 
  296.                         RAR_OM_LIST mode, the operation is equal to 
  297.                         RAR_SKIP. 
  298.   RAR_EXTRACT           Extract the current file and move to the next file.
  299.                         If the archive was opened with RAR_OM_LIST mode,
  300.                         the operation is equal to RAR_SKIP.
  301. DestPath
  302.   This parameter should point to a zero terminated string containing the 
  303.   destination directory to which to extract files to. If DestPath is equal 
  304.   to NULL it means extract to the current directory. This parameter has 
  305.   meaning only if DestName is NULL. 
  306. DestName
  307.   This parameter should point to a string containing the full path and name
  308.   of the file to be extracted or NULL as default. If DestName is defined
  309.   (not NULL) it overrides the original file name saved in the archive and 
  310.   DestPath setting. 
  311.   Both DestPath and DestName must be in OEM encoding. If necessary,
  312.   use CharToOem to convert text to OEM before passing to this function.
  313. Return values
  314. ~~~~~~~~~~~~~
  315.   0                     Success
  316.   ERAR_BAD_DATA         File CRC error
  317.   ERAR_BAD_ARCHIVE      Volume is not valid RAR archive
  318.   ERAR_UNKNOWN_FORMAT   Unknown archive format
  319.   ERAR_EOPEN            Volume open error
  320.   ERAR_ECREATE          File create error
  321.   ERAR_ECLOSE           File close error
  322.   ERAR_EREAD            Read error
  323.   ERAR_EWRITE           Write error
  324. ====================================================================
  325. void PASCAL RARSetCallback(HANDLE hArcData,
  326.             int PASCAL (*CallbackProc)(UINT msg,LONG UserData,LONG P1,LONG P2),
  327.             LONG UserData);
  328. ====================================================================
  329. Description
  330. ~~~~~~~~~~~
  331.   Set a user-defined callback function to process Unrar events.
  332. Parameters
  333. ~~~~~~~~~~
  334. hArcData
  335.   This parameter should contain the archive handle obtained from the
  336.   RAROpenArchive function call.
  337. CallbackProc
  338.   It should point to a user-defined callback function.
  339.   The function will be passed four parameters:
  340.   msg                    Type of event. Described below.
  341.   UserData               User defined value passed to RARSetCallback.
  342.   P1 and P2              Event dependent parameters. Described below.
  343.   Possible events
  344.     UCM_CHANGEVOLUME     Process volume change.
  345.       P1                   Points to the zero terminated name
  346.                            of the next volume.
  347.       P2                   The function call mode:
  348.         RAR_VOL_ASK          Required volume is absent. The function should
  349.                              prompt user and return a non-zero value
  350.                              to retry or return -1 value to terminate 
  351.                              operation. The function may also specify a new 
  352.                              volume name, placing it to the address specified
  353.                              by P1 parameter. 
  354.         RAR_VOL_NOTIFY       Required volume is successfully opened.
  355.                              This is a notification call and volume name
  356.                              modification is not allowed. The function should 
  357.                              return a non-zero value to continue or -1
  358.                              to terminate operation. 
  359.     UCM_PROCESSDATA          Process unpacked data. It may be used to read
  360.                              a file while it is being extracted or tested
  361.                              without actual extracting file to disk.
  362.                              Return a non-zero value to continue process
  363.                              or -1 to cancel the archive operation
  364.       P1                   Address pointing to the unpacked data.
  365.                            Function may refer to the data but must not
  366.                            change it.
  367.       P2                   Size of the unpacked data. It is guaranteed
  368.                            only that the size will not exceed the maximum
  369.                            dictionary size (4 Mb in RAR 3.0).
  370.     UCM_NEEDPASSWORD         DLL needs a password to process archive.
  371.                              This message must be processed if you wish
  372.                              to be able to handle archives with encrypted
  373.                              file names. It can be also used as replacement
  374.                              of RARSetPassword function even for usual
  375.                              encrypted files with non-encrypted names.
  376.       P1                   Address pointing to the buffer for a password.
  377.                            You need to copy a password here.
  378.       P2                   Size of the password buffer.
  379. UserData
  380.   User data passed to callback function.
  381.   Other functions of UNRAR.DLL should not be called from the callback
  382.   function.
  383. Return values
  384. ~~~~~~~~~~~~~
  385.   None
  386. ====================================================================
  387. void PASCAL RARSetChangeVolProc(HANDLE hArcData,
  388.             int PASCAL (*ChangeVolProc)(char *ArcName,int Mode));
  389. ====================================================================
  390. Obsoleted, use RARSetCallback instead.
  391. ====================================================================
  392. void PASCAL RARSetProcessDataProc(HANDLE hArcData,
  393.             int PASCAL (*ProcessDataProc)(unsigned char *Addr,int Size))
  394. ====================================================================
  395. Obsoleted, use RARSetCallback instead.
  396. ====================================================================
  397. void PASCAL RARSetPassword(HANDLE hArcData,
  398.                            char *Password);
  399. ====================================================================
  400. Description
  401. ~~~~~~~~~~~
  402.   Set a password to decrypt files.
  403. Parameters
  404. ~~~~~~~~~~
  405. hArcData
  406.   This parameter should contain the archive handle obtained from the
  407.   RAROpenArchive function call.
  408. Password
  409.   It should point to a string containing a zero terminated password.
  410. Return values
  411. ~~~~~~~~~~~~~
  412.   None
  413. ====================================================================
  414. void PASCAL RARGetDllVersion();
  415. ====================================================================
  416. Description
  417. ~~~~~~~~~~~
  418.   Returns unrar.dll version.
  419. Parameters
  420. ~~~~~~~~~~
  421.   None.
  422. Return values
  423. ~~~~~~~~~~~~~
  424.   Returns an integer value denoting DLL version. It is increased in case
  425. of changes in DLL API. The current version value is defined in unrar.h
  426. as RAR_DLL_VERSION
  427.   This function is absent in old versions of unrar.dll, so it may be wise
  428. to use LoadLibrary and GetProcAddress to access this function.