\r
memset(& g_oaInfo, 0, sizeof(g_oaInfo));\r
g_oaInfo.ArcName = NULL;\r
+// g_oaInfo.ArcNameW = _szArcName.wchar_str();\r
g_oaInfo.ArcNameW = (wchar_t *) malloc((_szArcName.Len() + 1) * sizeof(wchar_t));\r
wcscpy(g_oaInfo.ArcNameW, _szArcName.wchar_str());\r
g_oaInfo.OpenMode = RAR_OM_LIST;\r
g_oaInfo.CmtBuf = g_szComment;\r
g_oaInfo.CmtBufSize = sizeof(g_szComment) - 1;\r
+ g_oaInfo.Callback = CallbackProc;\r
* _hArchive = ((void * (__stdcall *)(RAROpenArchiveDataEx *)) p)(& g_oaInfo);\r
free(g_oaInfo.ArcNameW);\r
- if (* _hArchive == NULL)\r
- {\r
- return TPI_ERROR_UNDEFINED;\r
- }\r
- int nErrorCode = ErrorCodeConvert(g_oaInfo.OpenResult);\r
- if (nErrorCode != TPI_ERROR_SUCCESS)\r
- {\r
- return nErrorCode;\r
- }\r
-\r
- // コールバック関数を設定。\r
- if (! g_hLib.HasSymbol(wxT("RARSetCallback")))\r
- {\r
- CloseArchive(* _hArchive);\r
- return TPI_ERROR_U_USE_LIBRARY;\r
- }\r
- p = g_hLib.GetSymbol(wxT("RARSetCallback"));\r
- if (! p)\r
- {\r
- CloseArchive(* _hArchive);\r
- return TPI_ERROR_U_USE_LIBRARY;\r
- }\r
- ((void (__stdcall *)(void *, void *, long)) p)(* _hArchive, (void *) CallbackProc, (long) & g_hdInfo);\r
-\r
- return TPI_ERROR_SUCCESS;\r
+ return * _hArchive == NULL ? TPI_ERROR_UNDEFINED : ErrorCodeConvert(g_oaInfo.OpenResult);\r
}\r
\r
int __stdcall CloseArchive\r
RAROpenArchiveDataEx oaInfo;\r
memset(& oaInfo, 0, sizeof(oaInfo));\r
oaInfo.ArcName = NULL;\r
+// oaInfo.ArcNameW = _szArcName.wchar_str();\r
oaInfo.ArcNameW = (wchar_t *) malloc((_szArcName.Len() + 1) * sizeof(wchar_t));\r
wcscpy(oaInfo.ArcNameW, _szArcName.wchar_str());\r
oaInfo.OpenMode = RAR_OM_EXTRACT;\r
oaInfo.CmtBufSize = 0;\r
+ oaInfo.Callback = CallbackProc;\r
void * hArc = ((void * (__stdcall *)(RAROpenArchiveDataEx *)) p)(& oaInfo);\r
free(oaInfo.ArcNameW);\r
if (hArc == NULL)\r
return nErrorCode;\r
}\r
\r
- // コールバック関数を設定。\r
- if (! g_hLib.HasSymbol(wxT("RARSetCallback")))\r
- {\r
- CloseArchive(hArc);\r
- return TPI_ERROR_U_USE_LIBRARY;\r
- }\r
- p = g_hLib.GetSymbol(wxT("RARSetCallback"));\r
- if (! p)\r
- {\r
- CloseArchive(hArc);\r
- return TPI_ERROR_U_USE_LIBRARY;\r
- }\r
- ((void (__stdcall *)(void *, void *, long)) p)(hArc, (void *) CallbackProc, (long) & g_hdInfo);\r
-\r
void\r
* pS = g_hLib.HasSymbol(wxT("RARSetPassword")) ? g_hLib.GetSymbol(wxT("RARSetPassword")) : NULL,\r
* pR = g_hLib.HasSymbol(wxT("RARReadHeaderEx")) ? g_hLib.GetSymbol(wxT("RARReadHeaderEx")) : NULL,\r
// Structures\r
//******************************************************************************\r
\r
+typedef int (__stdcall *UNRARCALLBACK)(unsigned int msg, long UserData, long P1, long P2);\r
+\r
struct RARHeaderDataEx\r
{\r
char ArcName[1024];\r
unsigned int CmtSize;\r
unsigned int CmtState;\r
unsigned int Flags;\r
- unsigned int Reserved[32];\r
+ UNRARCALLBACK Callback;\r
+ long UserData;\r
+ unsigned int Reserved[28];\r
};\r
\r
enum UNRARCALLBACK_MESSAGES\r
UCM_PROCESSDATA,\r
UCM_NEEDPASSWORD\r
};\r
-\r
-typedef int (__stdcall *UNRARCALLBACK)(unsigned int msg, long UserData, long P1, long P2);\r