00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "vmsUnRARDLL.h"
00009
00010 #ifdef _DEBUG
00011 #undef THIS_FILE
00012 static char THIS_FILE[]=__FILE__;
00013 #define new DEBUG_NEW
00014 #endif
00015
00016 vmsUnRARDLL::vmsUnRARDLL(LPCSTR pszDll) :
00017 vmsDLL (pszDll)
00018 {
00019 m_pfnRAROpenArchiveEx = NULL;
00020 m_pfnRARSetCallback = NULL;
00021 m_pfnRARReadHeader = NULL;
00022 m_pfnRARProcessFile = NULL;
00023 m_pfnRARCloseArchive = NULL;
00024 }
00025
00026 vmsUnRARDLL::~vmsUnRARDLL()
00027 {
00028
00029 }
00030
00031 bool vmsUnRARDLL::Load(LPCSTR pszDll)
00032 {
00033 if (false == vmsDLL::Load (pszDll))
00034 return false;
00035
00036 m_pfnRAROpenArchiveEx = (FNRAROAEX) GetProcAddress ("RAROpenArchiveEx");
00037 m_pfnRARSetCallback = (FNRARSC) GetProcAddress ("RARSetCallback");
00038 m_pfnRARReadHeader = (FNRARRH) GetProcAddress ("RARReadHeader");
00039 m_pfnRARProcessFile = (FNRARPF) GetProcAddress ("RARProcessFile");
00040 m_pfnRARCloseArchive = (FNRARCA) GetProcAddress ("RARCloseArchive");
00041
00042 return true;
00043 }
00044
00045 void vmsUnRARDLL::Free()
00046 {
00047 m_pfnRAROpenArchiveEx = NULL;
00048 m_pfnRARSetCallback = NULL;
00049 m_pfnRARReadHeader = NULL;
00050 m_pfnRARProcessFile = NULL;
00051 m_pfnRARCloseArchive = NULL;
00052 vmsDLL::Free ();
00053 }
00054
00055 HANDLE vmsUnRARDLL::RAROpenArchiveEx(RAROpenArchiveDataEx *ArchiveData)
00056 {
00057 if (m_pfnRAROpenArchiveEx == NULL)
00058 return NULL;
00059
00060 return m_pfnRAROpenArchiveEx (ArchiveData);
00061 }
00062
00063 void vmsUnRARDLL::RARSetCallback(HANDLE hArcData, UNRARCALLBACK Callback, LONG UserData)
00064 {
00065 if (m_pfnRARSetCallback == NULL)
00066 return;
00067
00068 m_pfnRARSetCallback (hArcData, Callback, UserData);
00069 }
00070
00071 int vmsUnRARDLL::RARReadHeader(HANDLE hArcData, RARHeaderData *HeaderData)
00072 {
00073 if (m_pfnRARReadHeader == NULL)
00074 return 0;
00075
00076 return m_pfnRARReadHeader (hArcData, HeaderData);
00077 }
00078
00079 int vmsUnRARDLL::RARProcessFile(HANDLE hArcData, int Operation, char *DestPath, char *DestName)
00080 {
00081 if (m_pfnRARProcessFile == NULL)
00082 return 0;
00083
00084 return m_pfnRARProcessFile (hArcData, Operation, DestPath, DestName);
00085 }
00086
00087 int vmsUnRARDLL::RARCloseArchive(HANDLE hArcData)
00088 {
00089 if (m_pfnRARCloseArchive == NULL)
00090 return 0;
00091
00092 return m_pfnRARCloseArchive (hArcData);
00093 }