OSDN Git Service

上書き確認を実装。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sat, 25 Sep 2010 07:02:46 +0000 (07:02 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sat, 25 Sep 2010 07:02:46 +0000 (07:02 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@356 9df91469-1e22-0410-86e7-ea8537beb833

src/plugin/calLibrary/calLibrary.cpp
src/plugin/calLibrary/calLibrary.h

index 25a41a9..a635bf6 100644 (file)
@@ -94,9 +94,9 @@ BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void
                                // EXTRACTINGINFOEXW -> TPI_FILEINFO変換。\r
                                piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
                                piInfo.fiInfo.tmModified.SetFromDOS(ex->wTime | (ex->wDate << 16));\r
-                               piInfo.fiInfo.nPackedSize      = ex->dwCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize    = ex->exinfo.dwFileSize;\r
-                               piInfo.fiInfo.eOSType           = ex->eOSType;\r
+                               piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize;\r
+                               piInfo.fiInfo.nUnpackedSize     = ex->exinfo.dwFileSize;\r
+                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
                                piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
                                piInfo.fiInfo.szStoredName      = WC2String(ex->exinfo.szSourceFileName);\r
                                piInfo.fiInfo.szMethod          = WC2String(ex->szMode);\r
@@ -113,9 +113,9 @@ BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void
                                // EXTRACTINGINFOEX -> TPI_FILEINFO変換。\r
                                piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
                                piInfo.fiInfo.tmModified.SetFromDOS(ex->wTime | (ex->wDate << 16));\r
-                               piInfo.fiInfo.nPackedSize      = ex->dwCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize    = ex->exinfo.dwFileSize;\r
-                               piInfo.fiInfo.eOSType           = ex->eOSType;\r
+                               piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize;\r
+                               piInfo.fiInfo.nUnpackedSize     = ex->exinfo.dwFileSize;\r
+                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
                                piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
                                piInfo.fiInfo.szStoredName      = UTF82String(ex->exinfo.szSourceFileName);\r
                                piInfo.fiInfo.szMethod          = UTF82String(ex->szMode);\r
@@ -141,7 +141,7 @@ BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void
                                piInfo.fiInfo.tmModified        = FileTimeToWxDateTime(& ex->ftWriteTime);\r
                                piInfo.fiInfo.nPackedSize       = ex->llCompressedSize;\r
                                piInfo.fiInfo.nUnpackedSize     = ex->llFileSize;\r
-                               piInfo.fiInfo.eOSType           = ex->eOSType;\r
+                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
                                piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
                                piInfo.fiInfo.szStoredName      = WC2String(ex->exinfo.szSourceFileName);\r
                                piInfo.fiInfo.szMethod          = WC2String(ex->szMode);\r
@@ -163,7 +163,7 @@ BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void
                                piInfo.fiInfo.tmModified        = FileTimeToWxDateTime(& ex->ftWriteTime);\r
                                piInfo.fiInfo.nPackedSize       = ex->llCompressedSize;\r
                                piInfo.fiInfo.nUnpackedSize     = ex->llFileSize;\r
-                               piInfo.fiInfo.eOSType           = ex->eOSType;\r
+                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
                                piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
                                piInfo.fiInfo.szStoredName      = UTF82String(ex->exinfo.szSourceFileName);\r
                                piInfo.fiInfo.szMethod          = UTF82String(ex->szMode);\r
@@ -222,6 +222,146 @@ BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void
        return g_prProc(TPI_NOTIFY_COMMON, & piInfo) != TPI_CALLBACK_CANCEL;\r
 }\r
 \r
+BOOL __stdcall EnumMembersProc(void * _lpEis)\r
+{\r
+       // 構造体を初期化。\r
+       TPI_PROCESSINFO piInfo;\r
+       piInfo.eMessage = TPI_MESSAGE_ASK;\r
+       piInfo.eStatus  = TPI_PARAM_DEST;\r
+       if (g_prProc == NULL)\r
+       {\r
+               return TRUE;\r
+       }\r
+\r
+       if (_lpEis != NULL)\r
+       {\r
+               if ((g_LibInfo.fRunning && g_LibInfo.fCallback32bit) || (g_LibInfoAlt.fRunning && g_LibInfoAlt.fCallback32bit))\r
+               {\r
+                       if ((g_LibInfo.fRunning && g_LibInfo.fUnicode) || (g_LibInfoAlt.fRunning && g_LibInfoAlt.fUnicode))\r
+                       {\r
+                               // 初期化。\r
+                               ENUM_MEMBER_INFOW * ex = (ENUM_MEMBER_INFOW *) _lpEis;\r
+                               if (ex->uCommand != COMMAND_EXTRACT)\r
+                               {\r
+                                       return TRUE;\r
+                               }\r
+\r
+                               // ENUM_MEMBER_INFOW -> TPI_FILEINFO変換。\r
+                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
+                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
+                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
+                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
+                               piInfo.fiInfo.tmModified        = FileTimeToWxDateTime(& ex->ftWriteTime);\r
+                               piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize;\r
+                               piInfo.fiInfo.nUnpackedSize     = ex->dwOriginalSize;\r
+                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
+                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
+                               piInfo.fiInfo.szStoredName      = WC2String(ex->szFileName);\r
+                               piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
+\r
+                               // ENUM_MEMBER_INFOW -> TPI_PROCESSINFO変換。\r
+                               piInfo.fnDestination            = wxFileName(WC2String(ex->szAddFileName));\r
+\r
+                               // コールバック関数に送信。\r
+                               g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+                               wcsncpy(ex->szAddFileName, piInfo.fnDestination.GetFullPath().c_str(), FNAME_MAX32);\r
+                       }\r
+                       else\r
+                       {\r
+                               // 初期化。\r
+                               ENUM_MEMBER_INFO * ex = (ENUM_MEMBER_INFO *) _lpEis;\r
+                               if (ex->uCommand != COMMAND_EXTRACT)\r
+                               {\r
+                                       return TRUE;\r
+                               }\r
+\r
+                               // ENUM_MEMBER_INFO -> TPI_FILEINFO変換。\r
+                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
+                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
+                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
+                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
+                               piInfo.fiInfo.tmModified        = FileTimeToWxDateTime(& ex->ftWriteTime);\r
+                               piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize;\r
+                               piInfo.fiInfo.nUnpackedSize     = ex->dwOriginalSize;\r
+                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
+                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
+                               piInfo.fiInfo.szStoredName      = UTF82String(ex->szFileName);\r
+                               piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
+\r
+                               // ENUM_MEMBER_INFO -> TPI_PROCESSINFO変換。\r
+                               piInfo.fnDestination            = wxFileName(UTF82String(ex->szAddFileName));\r
+\r
+                               // コールバック関数に送信。\r
+                               g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+                               strncpy(ex->szAddFileName, piInfo.fnDestination.GetFullPath().ToUTF8(), FNAME_MAX32);\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       if ((g_LibInfo.fRunning && g_LibInfo.fUnicode) || (g_LibInfoAlt.fRunning && g_LibInfoAlt.fUnicode))\r
+                       {\r
+                               // 初期化。\r
+                               ENUM_MEMBER_INFO64W * ex = (ENUM_MEMBER_INFO64W *) _lpEis;\r
+                               if (ex->uCommand != COMMAND_EXTRACT)\r
+                               {\r
+                                       return TRUE;\r
+                               }\r
+\r
+                               // ENUM_MEMBER_INFO64W -> TPI_FILEINFO変換。\r
+                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
+                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
+                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
+                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
+                               piInfo.fiInfo.tmModified        = FileTimeToWxDateTime(& ex->ftWriteTime);\r
+                               piInfo.fiInfo.nPackedSize       = ex->llCompressedSize;\r
+                               piInfo.fiInfo.nUnpackedSize     = ex->llOriginalSize;\r
+                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
+                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
+                               piInfo.fiInfo.szStoredName      = WC2String(ex->szFileName);\r
+                               piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
+\r
+                               // ENUM_MEMBER_INFO64W -> TPI_PROCESSINFO変換。\r
+                               piInfo.fnDestination            = wxFileName(WC2String(ex->szAddFileName));\r
+\r
+                               // コールバック関数に送信。\r
+                               g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+                               wcsncpy(ex->szAddFileName, piInfo.fnDestination.GetFullPath().c_str(), FNAME_MAX32);\r
+                       }\r
+                       else\r
+                       {\r
+                               // 初期化。\r
+                               ENUM_MEMBER_INFO64 * ex = (ENUM_MEMBER_INFO64 *) _lpEis;\r
+                               if (ex->uCommand != COMMAND_EXTRACT)\r
+                               {\r
+                                       return TRUE;\r
+                               }\r
+\r
+                               // ENUM_MEMBER_INFO64 -> TPI_FILEINFO変換。\r
+                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
+                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
+                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
+                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
+                               piInfo.fiInfo.tmModified        = FileTimeToWxDateTime(& ex->ftWriteTime);\r
+                               piInfo.fiInfo.nPackedSize       = ex->llCompressedSize;\r
+                               piInfo.fiInfo.nUnpackedSize     = ex->llOriginalSize;\r
+                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
+                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
+                               piInfo.fiInfo.szStoredName      = UTF82String(ex->szFileName);\r
+                               piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
+\r
+                               // ENUM_MEMBER_INFO64 -> TPI_PROCESSINFO変換。\r
+                               piInfo.fnDestination            = wxFileName(UTF82String(ex->szAddFileName));\r
+\r
+                               // コールバック関数に送信。\r
+                               g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+                               strncpy(ex->szAddFileName, piInfo.fnDestination.GetFullPath().ToUTF8(), FNAME_MAX32);\r
+                       }\r
+               }\r
+       }\r
+\r
+       return piInfo.fnDestination.IsOk();\r
+}\r
+\r
 //******************************************************************************\r
 //    Inside Functions\r
 //******************************************************************************\r
@@ -363,9 +503,62 @@ int CalSetCallbackProc(bool fAlt)
                }\r
        }\r
 \r
-       return (fpProc == NULL || ! ((fAlt ? g_LibInfoAlt.fCallback32bit : g_LibInfo.fCallback32bit)\r
+       if (fpProc == NULL || ! ((fAlt ? g_LibInfoAlt.fCallback32bit : g_LibInfo.fCallback32bit)\r
                ? ((BOOL (__stdcall *)(HWND, ARCHIVERPROC *       )) fpProc)(NULL, (ARCHIVERPROC *) CallbackProc)\r
                : ((BOOL (__stdcall *)(HWND, ARCHIVERPROC *, DWORD)) fpProc)(NULL, (ARCHIVERPROC *) CallbackProc, (fAlt ? g_LibInfoAlt.fUnicode : g_LibInfo.fUnicode) ? sizeof(EXTRACTINGINFOEX64W) : sizeof(EXTRACTINGINFOEX64))))\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+\r
+       // EnumMembersProc系。\r
+       if (fAlt)\r
+       {\r
+               fpProc = ::GetAPIAddressAlt("ClearEnumMembersProc64", false);\r
+               g_LibInfoAlt.fCallback32bit = fpProc == NULL;\r
+               if (g_LibInfoAlt.fCallback32bit)\r
+               {\r
+                       fpProc = ::GetAPIAddressAlt("ClearEnumMembersProc", false);\r
+               }\r
+       }\r
+       else\r
+       {\r
+               fpProc = ::GetAPIAddress("ClearEnumMembersProc64", false);\r
+               g_LibInfo.fCallback32bit = fpProc == NULL;\r
+               if (g_LibInfo.fCallback32bit)\r
+               {\r
+                       fpProc = ::GetAPIAddress("ClearEnumMembersProc", false);\r
+               }\r
+       }\r
+       if (fpProc == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+       // エラーでも無視する。\r
+//     ((BOOL (__stdcall *)(void)) fpProc)();\r
+\r
+       // 続いて設定。\r
+       if (fAlt)\r
+       {\r
+               fpProc = ::GetAPIAddressAlt("SetEnumMembersProc64", false);\r
+               g_LibInfoAlt.fCallback32bit = fpProc == NULL;\r
+               if (g_LibInfoAlt.fCallback32bit)\r
+               {\r
+                       fpProc = ::GetAPIAddressAlt("SetEnumMembersProc", true);\r
+               }\r
+       }\r
+       else\r
+       {\r
+               fpProc = ::GetAPIAddress("SetEnumMembersProc64", false);\r
+               g_LibInfo.fCallback32bit = fpProc == NULL;\r
+               if (g_LibInfo.fCallback32bit)\r
+               {\r
+                       fpProc = ::GetAPIAddress("SetEnumMembersProc", true);\r
+               }\r
+       }\r
+\r
+       return (fpProc == NULL || ! ((fAlt ? g_LibInfoAlt.fCallback32bit : g_LibInfo.fCallback32bit)\r
+               ? ((BOOL (__stdcall *)(WND_ENUMMEMBPROC *       )) fpProc)((WND_ENUMMEMBPROC *) EnumMembersProc)\r
+               : ((BOOL (__stdcall *)(WND_ENUMMEMBPROC *, DWORD)) fpProc)((WND_ENUMMEMBPROC *) EnumMembersProc, (fAlt ? g_LibInfoAlt.fUnicode : g_LibInfo.fUnicode) ? sizeof(ENUM_MEMBER_INFO64W) : sizeof(ENUM_MEMBER_INFO))))\r
                ? TPI_ERROR_U_USE_LIBRARY : TPI_ERROR_SUCCESS;\r
 }\r
 \r
@@ -640,7 +833,7 @@ int __stdcall GetFileInformation
                if (g_LibInfo.fUnicode)\r
                {\r
                        _fiInfo->dwCRC32        = iiInfoW.dwCRC;\r
-                       _fiInfo->eOSType        = iiInfoW.eOSType;\r
+                       _fiInfo->eOSType        = iiInfoW.uOSType;\r
                        _fiInfo->nPackedSize    = iiInfoW.dwCompressedSize;\r
                        _fiInfo->nUnpackedSize  = iiInfoW.dwOriginalSize;\r
                        _fiInfo->tmModified.SetFromDOS(MAKELONG(iiInfoW.wTime, iiInfoW.wDate));\r
@@ -651,7 +844,7 @@ int __stdcall GetFileInformation
                else\r
                {\r
                        _fiInfo->dwCRC32        = iiInfo.dwCRC;\r
-                       _fiInfo->eOSType        = iiInfo.eOSType;\r
+                       _fiInfo->eOSType        = iiInfo.uOSType;\r
                        _fiInfo->nPackedSize    = iiInfo.dwCompressedSize;\r
                        _fiInfo->nUnpackedSize  = iiInfo.dwOriginalSize;\r
                        _fiInfo->tmModified.SetFromDOS(MAKELONG(iiInfo.wTime, iiInfo.wDate));\r
index 01462e7..b1d83b4 100644 (file)
 #define ERROR_HDR_NO_NAME              0X804F\r
 #endif\r
 \r
+#define COMMAND_LIST   1\r
+#define COMMAND_ADD            2\r
+#define COMMAND_FRESH  3\r
+#define COMMAND_DELETE 4\r
+#define COMMAND_EXTRACT        5\r
+#define COMMAND_PRINT  6\r
+#define COMMAND_TEST   7\r
+#define COMMAND_MAKESFX        8\r
+#define COMMAND_JOINT  9\r
+#define COMMAND_CONVERT        10\r
+#define COMMAND_RENAME 11\r
+\r
 #pragma pack(1)\r
 \r
 typedef struct _tagINDIVIDUALINFO\r
@@ -124,8 +136,8 @@ typedef struct _tagINDIVIDUALINFO
        DWORD dwOriginalSize;\r
        DWORD dwCompressedSize;\r
        DWORD dwCRC;\r
-       UINT uFlag;\r
-       UINT eOSType;\r
+       unsigned int uFlag;\r
+       unsigned int uOSType;\r
        WORD wRatio;\r
        WORD wDate;\r
        WORD wTime;\r
@@ -140,8 +152,8 @@ typedef struct _tagINDIVIDUALINFOW
        DWORD dwOriginalSize;\r
        DWORD dwCompressedSize;\r
        DWORD dwCRC;\r
-       UINT uFlag;\r
-       UINT eOSType;\r
+       unsigned int uFlag;\r
+       unsigned int uOSType;\r
        WORD wRatio;\r
        WORD wDate;\r
        WORD wTime;\r
@@ -176,7 +188,7 @@ typedef struct EXTRACTINGINFOEX
        EXTRACTINGINFO exinfo;\r
        DWORD dwCompressedSize;\r
        DWORD dwCRC;\r
-       UINT eOSType;\r
+       unsigned int uOSType;\r
        WORD wRatio;\r
        WORD wDate;\r
        WORD wTime;\r
@@ -189,7 +201,7 @@ typedef struct EXTRACTINGINFOEXW
        EXTRACTINGINFOW exinfo;\r
        DWORD dwCompressedSize;\r
        DWORD dwCRC;\r
-       UINT eOSType;\r
+       unsigned int uOSType;\r
        WORD wRatio;\r
        WORD wDate;\r
        WORD wTime;\r
@@ -201,12 +213,12 @@ typedef struct EXTRACTINGINFOEX64
 {\r
        DWORD dwStructSize;\r
        EXTRACTINGINFO exinfo;\r
-       UINT64 llFileSize;\r
-       UINT64 llCompressedSize;\r
-       UINT64 llWriteSize;\r
+       LONGLONG llFileSize;\r
+       LONGLONG llCompressedSize;\r
+       LONGLONG llWriteSize;\r
        DWORD dwAttributes;\r
        DWORD dwCRC;\r
-       UINT eOSType;\r
+       unsigned int uOSType;\r
        WORD wRatio;\r
        FILETIME ftCreateTime;\r
        FILETIME ftAccessTime;\r
@@ -222,12 +234,12 @@ typedef struct EXTRACTINGINFOEX64W
 {\r
        DWORD dwStructSize;\r
        EXTRACTINGINFOW exinfo;\r
-       UINT64 llFileSize;\r
-       UINT64 llCompressedSize;\r
-       UINT64 llWriteSize;\r
+       LONGLONG llFileSize;\r
+       LONGLONG llCompressedSize;\r
+       LONGLONG llWriteSize;\r
        DWORD dwAttributes;\r
        DWORD dwCRC;\r
-       UINT eOSType;\r
+       unsigned int uOSType;\r
        WORD wRatio;\r
        FILETIME ftCreateTime;\r
        FILETIME ftAccessTime;\r
@@ -241,4 +253,82 @@ typedef struct EXTRACTINGINFOEX64W
 \r
 typedef BOOL(CALLBACK * ARCHIVERPROC)(HWND, unsigned int, unsigned int, void *);\r
 \r
+typedef struct ENUM_MEMBER_INFO\r
+{\r
+       DWORD dwStructSize;\r
+       unsigned int uCommand;\r
+       DWORD dwOriginalSize;\r
+       DWORD dwCompressedSize;\r
+       DWORD dwAttributes;\r
+       DWORD dwCRC;\r
+       unsigned int uOSType;\r
+       WORD wRatio;\r
+       FILETIME ftCreateTime;\r
+       FILETIME ftAccessTime;\r
+       FILETIME ftWriteTime;\r
+       char szFileName[FNAME_MAX32 + 1];\r
+       char dummy1[3];\r
+       char szAddFileName[FNAME_MAX32 + 1];\r
+       char dummy2[3];\r
+}      ENUM_MEMBER_INFO, *LPENUM_MEMBER_INFO;\r
+\r
+typedef struct\r
+{\r
+       DWORD dwStructSize;\r
+       unsigned int uCommand;\r
+       DWORD dwOriginalSize;\r
+       DWORD dwCompressedSize;\r
+       DWORD dwAttributes;\r
+       DWORD dwCRC;\r
+       unsigned int uOSType;\r
+       WORD wRatio;\r
+       FILETIME ftCreateTime;\r
+       FILETIME ftAccessTime;\r
+       FILETIME ftWriteTime;\r
+       wchar_t szFileName[FNAME_MAX32 + 1];\r
+       wchar_t dummy1[3];\r
+       wchar_t szAddFileName[FNAME_MAX32 + 1];\r
+       wchar_t dummy2[3];\r
+}      ENUM_MEMBER_INFOW, *LPENUM_MEMBER_INFOW;\r
+\r
+typedef struct\r
+{\r
+       DWORD dwStructSize;\r
+       unsigned int uCommand;\r
+       LONGLONG llOriginalSize;\r
+       LONGLONG llCompressedSize;\r
+       DWORD dwAttributes;\r
+       DWORD dwCRC;\r
+       unsigned int uOSType;\r
+       WORD wRatio;\r
+       FILETIME ftCreateTime;\r
+       FILETIME ftAccessTime;\r
+       FILETIME ftWriteTime;\r
+       char szFileName[FNAME_MAX32 + 1];\r
+       char dummy1[3];\r
+       char szAddFileName[FNAME_MAX32 + 1];\r
+       char dummy2[3];\r
+}      ENUM_MEMBER_INFO64, *LPENUM_MEMBER_INFO64;\r
+\r
+typedef struct\r
+{\r
+       DWORD dwStructSize;\r
+       unsigned int uCommand;\r
+       LONGLONG llOriginalSize;\r
+       LONGLONG llCompressedSize;\r
+       DWORD dwAttributes;\r
+       DWORD dwCRC;\r
+       unsigned int uOSType;\r
+       WORD wRatio;\r
+       FILETIME ftCreateTime;\r
+       FILETIME ftAccessTime;\r
+       FILETIME ftWriteTime;\r
+       wchar_t szFileName[FNAME_MAX32 + 1];\r
+       wchar_t dummy1[3];\r
+       wchar_t szAddFileName[FNAME_MAX32 + 1];\r
+       wchar_t dummy2[3];\r
+}      ENUM_MEMBER_INFO64W, *LPENUM_MEMBER_INFO64W;\r
+\r
+typedef BOOL(CALLBACK * WND_ENUMMEMBPROC)(void *);\r
+\r
 #pragma pack()\r