+// Inside Functions\r
+//******************************************************************************\r
+\r
+#define GetAPIAddress(name) GetProcAddress(g_hLib, "EGG_" name)\r
+\r
+int ErrorCodeConvert(int nErrorCode)\r
+{\r
+ switch (nErrorCode)\r
+ {\r
+ case EGG_ERROR_FAIL: return TPI_ERROR_UNDEFINED;\r
+ case EGG_ERROR_SUCCESS: return TPI_ERROR_SUCCESS;\r
+ case EGG_ERROR_SKIP: return TPI_ERROR_D_SKIPPED;\r
+ case EGG_ERROR_CANCEL: return TPI_ERROR_D_SKIPPED;\r
+ case EGG_ERROR_IO: return TPI_ERROR_IO_MISC;\r
+ case EGG_ERROR_TYPEMISMATCH:return TPI_ERROR_ARC_UNSUPPORTED;\r
+ case EGG_ERROR_FILE: return TPI_ERROR_IO_MISC;\r
+ case EGG_ERROR_FORMAT: return TPI_ERROR_IO_ARC_MISC;\r
+ case EGG_ERROR_ALGORITHM: return TPI_ERROR_UNDEFINED;\r
+ default: return TPI_ERROR_UNDEFINED;\r
+ }\r
+}\r
+\r
+int __stdcall GetFileInformation2\r
+(\r
+ void * _hArchive,\r
+ TPI_FILEINFO * _fiInfo,\r
+ wxULongLong_t _nIndex\r
+)\r
+{\r
+ static FARPROC fpProc = ::GetAPIAddress("GetFileHeader");\r
+ if (fpProc == nullptr)\r
+ {\r
+ return TPI_ERROR_U_USE_LIBRARY;\r
+ }\r
+\r
+ EGGFileHeader fhInfo;\r
+ int nErrorCode = ErrorCodeConvert(((UINT (__cdecl *)(void *, size_t, EGGFileHeader *)) fpProc)(_hArchive, _nIndex, & fhInfo));\r
+ if (nErrorCode == TPI_ERROR_SUCCESS)\r
+ {\r
+ _fiInfo->dwAttribute = fhInfo.attribute;\r
+ if (fhInfo.encrypted)\r
+ {\r
+ _fiInfo->dwAttribute |= TPI_ATTRIBUTE_ENCRYPTED;\r
+ }\r
+ _fiInfo->dwCRC32 = fhInfo.crc;\r
+ _fiInfo->nPackedSize = fhInfo.packedSize;\r
+ _fiInfo->nUnpackedSize = fhInfo.unpackedSize;\r
+ _fiInfo->tmModify = fhInfo.lastModified;\r
+ _fiInfo->szComment = WC2String(fhInfo.comment);\r
+ _fiInfo->szStoredName = WC2String(fhInfo.fileName);\r
+ _fiInfo->szMethod = fhInfo.method == 2 ? wxT("ALZ") : fhInfo.method == 0 ? wxT("EGG") : wxT("unknown");\r
+ _fiInfo->nFileId = _nIndex;\r
+ _fiInfo->fnFileName = wxFileName(_fiInfo->szStoredName);\r
+ }\r
+\r
+ return nErrorCode;\r
+}\r
+\r
+//******************************************************************************\r