311 lines
10 KiB
C
311 lines
10 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "EtFileSystem.h"
|
|||
|
|
#include "HTTPClient.h"
|
|||
|
|
#ifdef _USE_BITTORRENT
|
|||
|
|
#include "WLibTorrent.h"
|
|||
|
|
#endif // _USE_BITTORRENT
|
|||
|
|
|
|||
|
|
// DnLauncher Download Patch Thread
|
|||
|
|
|
|||
|
|
#ifdef _USE_RTPATCH
|
|||
|
|
#define MAX_MESSAGES 10
|
|||
|
|
#endif // _USE_RTPATCH
|
|||
|
|
|
|||
|
|
// CThread Class
|
|||
|
|
class CThread
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
CThread();
|
|||
|
|
virtual ~CThread();
|
|||
|
|
|
|||
|
|
BOOL Start();
|
|||
|
|
BOOL Terminate( DWORD nExitCode );
|
|||
|
|
void SetThreadName( DWORD dwThreadID, const char* szThreadName );
|
|||
|
|
BOOL WaitForTerminate( DWORD nTimeout = INFINITE );
|
|||
|
|
HANDLE const GetThreadHandle() { return m_hHandleThread; }
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual void Run() = 0;
|
|||
|
|
HANDLE m_hHandleThread;
|
|||
|
|
DWORD m_nThreadID;
|
|||
|
|
BOOL m_bThreadLoop;
|
|||
|
|
|
|||
|
|
typedef struct tagTHREADNAME_INFO
|
|||
|
|
{
|
|||
|
|
DWORD dwType; // must be 0x1000
|
|||
|
|
LPCSTR szName; // pointer to name (in user addr space)
|
|||
|
|
DWORD dwThreadID; // thread ID (-1=caller thread)
|
|||
|
|
DWORD dwFlags; // reserved for future use, must be zero
|
|||
|
|
} THREADNAME_INFO;
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
static DWORD WINAPI _Runner( LPVOID pParam );
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// CDnPatchDownloadThread Class
|
|||
|
|
enum PatchReturn
|
|||
|
|
{
|
|||
|
|
PR_FAIL = 0,
|
|||
|
|
PR_OK,
|
|||
|
|
PR_LAUNCHER_PATCH,
|
|||
|
|
PR_FULLPATCH,
|
|||
|
|
PR_TERMINATE,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
enum FirstPatchReturn
|
|||
|
|
{
|
|||
|
|
FPR_FAIL = 0 ,
|
|||
|
|
FPR_OK ,
|
|||
|
|
FPR_LAUNCHER_PATCH,
|
|||
|
|
FPR_NEED_FULLPATCH,
|
|||
|
|
|
|||
|
|
FPR_MAX
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#define WM_STATUS_MSG WM_APP+101 // <20><>ġ <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBC><EFBFBD>
|
|||
|
|
|
|||
|
|
enum DownloadPatchState
|
|||
|
|
{
|
|||
|
|
PATCH_NONE = 0,
|
|||
|
|
PATCH_CHECK_VERSION, // <20><><EFBFBD><EFBFBD> üũ
|
|||
|
|
PATCH_CHECK_VERSION_FAILED, // <20><><EFBFBD><EFBFBD> üũ <20><><EFBFBD><EFBFBD>
|
|||
|
|
PATCH_DOWNLOAD_DATA, // <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٿ<EFBFBD><D9BF>ε<EFBFBD>
|
|||
|
|
PATCH_DOWNLOAD_DATA_FAILED, // <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٿ<EFBFBD><D9BF>ε<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
PATCH_MD5_CHECK, // <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF> <20>˻<EFBFBD>
|
|||
|
|
PATCH_MD5_CHECK_FAILED, // <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF> <20>˻<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
PATCH_APPLY_PAK_FILE, // <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ
|
|||
|
|
PATCH_APPLY_PAK_FILE_FAILED, // <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD>
|
|||
|
|
PATCH_APPLY_PAK_FILE_END, // <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20>Ϸ<EFBFBD>
|
|||
|
|
PATCH_COMPLETE, // <20><>ġ <20>Ϸ<EFBFBD>
|
|||
|
|
PATCH_LAUNCHER, // <20><>ó <20><>ġ
|
|||
|
|
PATCH_FAILED, // <20><>ġ <20><><EFBFBD><EFBFBD>
|
|||
|
|
PATCH_TERMINATE // <20><>ġ <20><><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct stDownloadInfoUpdateData
|
|||
|
|
{
|
|||
|
|
CString m_strFileName;
|
|||
|
|
__int64 m_nFileSize;
|
|||
|
|
__int64 m_nDownloadProgressMin;
|
|||
|
|
__int64 m_nDownloadProgressMax;
|
|||
|
|
int m_nCurrentFileCount;
|
|||
|
|
int m_nTotalFileCount;
|
|||
|
|
float m_fDownloadRate;
|
|||
|
|
#ifdef _USE_BITTORRENT
|
|||
|
|
libtorrent::torrent_handle* m_pTorrentHandle;
|
|||
|
|
#endif // _USE_BITTORRENT
|
|||
|
|
|
|||
|
|
stDownloadInfoUpdateData()
|
|||
|
|
: m_nFileSize( 0 )
|
|||
|
|
, m_nDownloadProgressMin( 0 )
|
|||
|
|
, m_nDownloadProgressMax( 0 )
|
|||
|
|
, m_nCurrentFileCount( 0 )
|
|||
|
|
, m_nTotalFileCount( 0 )
|
|||
|
|
, m_fDownloadRate( 0.0f )
|
|||
|
|
#ifdef _USE_BITTORRENT
|
|||
|
|
, m_pTorrentHandle( NULL )
|
|||
|
|
#endif // _USE_BITTORRENT
|
|||
|
|
{}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
enum FileCheck{ FILE_FALSE = 0, FIlE_OK, FIlE_EXIST };
|
|||
|
|
|
|||
|
|
#ifdef _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
struct RARHeaderData
|
|||
|
|
{
|
|||
|
|
char ArcName[260];
|
|||
|
|
char FileName[260];
|
|||
|
|
unsigned int Flags;
|
|||
|
|
unsigned int PackSize;
|
|||
|
|
unsigned int UnpSize;
|
|||
|
|
unsigned int HostOS;
|
|||
|
|
unsigned int FileCRC;
|
|||
|
|
unsigned int FileTime;
|
|||
|
|
unsigned int UnpVer;
|
|||
|
|
unsigned int Method;
|
|||
|
|
unsigned int FileAttr;
|
|||
|
|
char *CmtBuf;
|
|||
|
|
unsigned int CmtBufSize;
|
|||
|
|
unsigned int CmtSize;
|
|||
|
|
unsigned int CmtState;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct RAROpenArchiveDataEx
|
|||
|
|
{
|
|||
|
|
char *ArcName;
|
|||
|
|
wchar_t *ArcNameW;
|
|||
|
|
unsigned int OpenMode;
|
|||
|
|
unsigned int OpenResult;
|
|||
|
|
char *CmtBuf;
|
|||
|
|
unsigned int CmtBufSize;
|
|||
|
|
unsigned int CmtSize;
|
|||
|
|
unsigned int CmtState;
|
|||
|
|
unsigned int Flags;
|
|||
|
|
unsigned int Reserved[32];
|
|||
|
|
};
|
|||
|
|
#endif // _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
class CDnFistPatchDownloadThread : public CPatchCallback, public CThread
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
CDnFistPatchDownloadThread();
|
|||
|
|
virtual ~CDnFistPatchDownloadThread();
|
|||
|
|
|
|||
|
|
virtual void Run();
|
|||
|
|
void SetWindowHandle( HWND hWnd ){ m_hWnd = hWnd; }
|
|||
|
|
void TerminateThread() { m_bTerminateThread = true; }
|
|||
|
|
BOOL IsThreadEnd() { return m_bTerminateThread; }
|
|||
|
|
|
|||
|
|
FirstPatchReturn BegineModulePatch(); // FirstPatch( <20><><EFBFBD><EFBFBD> & <20><>ó <20><><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD>.
|
|||
|
|
int ParsingModuleList(); // <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ľ<EFBFBD>.
|
|||
|
|
int ChangeModuleFiles(int nVer); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
BOOL DownLoadModulePatch( int nVersion ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٿ<EFBFBD><D9BF>ε<EFBFBD>.
|
|||
|
|
BOOL PatchLauncherFiles( int nVersion ); // <20><>ó <20>ٿ<EFBFBD><D9BF>ε<EFBFBD> & <20><><EFBFBD><EFBFBD>.
|
|||
|
|
BOOL ProcessFullVersionPatch(); // Ǯ <20><><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>
|
|||
|
|
void ProcessRebootLauncher(); // <20><>ó <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
BOOL SaveModuleVersionToPak( int nVersion ); // Pak<61><6B><EFBFBD>Ͽ<EFBFBD> Version.cfg <20><><EFBFBD><EFBFBD>.
|
|||
|
|
BOOL SaveModuleVersionFile( CString& szFilePath, int nVersion ); // Version.cfg <20><><EFBFBD><EFBFBD>.
|
|||
|
|
BOOL SaveModuleVersionFileWithOutPakSave( CString& szFilePath, int nVersion );
|
|||
|
|
void CloseThread();
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
HWND m_hWnd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
|||
|
|
BOOL m_bTerminateThread; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>
|
|||
|
|
CString m_strFirstPatchURLPath; // PatchURL/FirstPatch/ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
CString m_strPatchListFile; // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><>ġ <20><><EFBFBD><EFBFBD>
|
|||
|
|
std::vector<std::string> m_vecCopyList; // ī<><C4AB> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
std::vector<std::string> m_vecDeleteList; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
class CDnPatchDownloadThread : public CPatchCallback, public CThread
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
CDnPatchDownloadThread();
|
|||
|
|
virtual ~CDnPatchDownloadThread();
|
|||
|
|
void SetWindowHandle( HWND hWnd ) { m_hWnd = hWnd; }
|
|||
|
|
|
|||
|
|
virtual void Run();
|
|||
|
|
void TerminateThread() { m_bTerminateThread = true; }
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
PatchReturn BeginPatch(); // <20><>ġ <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>
|
|||
|
|
|
|||
|
|
// Download
|
|||
|
|
BOOL DownLoadPatch( int nVersion ); // <20>ٿ<EFBFBD><D9BF>ε<EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>
|
|||
|
|
|
|||
|
|
#ifdef _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
HRESULT URLDownload( LPCTSTR strPatchFileUrl, LPCTSTR strFilePath, LPCTSTR strFileName,
|
|||
|
|
BOOL bSplitDownload = FALSE, DWORD dwAlreadyDownloadSize = 0, DWORD dwRemainDownloadFileSize = 0 ); // <20><><EFBFBD><EFBFBD> <20>̾<EFBFBD><CCBE>ޱ<EFBFBD> <20>ٿ<EFBFBD><D9BF>ε<EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>
|
|||
|
|
FileCheck CheckPatchFile( HINTERNET hInternetSession, LPCTSTR strFileName,
|
|||
|
|
CFile& file, DWORD& dwDownloadFileSize, BOOL bSplitDownload = FALSE ); // <20>ٿ<EFBFBD><D9BF>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ
|
|||
|
|
#else // _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
HRESULT URLDownload( LPCTSTR strPatchFileUrl, LPCTSTR strFilePath, LPCTSTR strFileName ); // <20><><EFBFBD><EFBFBD> <20>̾<EFBFBD><CCBE>ޱ<EFBFBD> <20>ٿ<EFBFBD><D9BF>ε<EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>
|
|||
|
|
FileCheck CheckPatchFile( HINTERNET hInternetSession, LPCTSTR strFileName,
|
|||
|
|
CFile& file, DWORD& dwDownloadFileSize ); // <20>ٿ<EFBFBD><D9BF>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ
|
|||
|
|
#endif // _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
|
|||
|
|
#ifdef _USE_BITTORRENT
|
|||
|
|
#ifdef _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
HRESULT BitTorrentDownload( LPCTSTR strPatchFileUrl, LPCTSTR strFilePath, LPCTSTR strFileName, LPCTSTR strUrl, int nVersion );
|
|||
|
|
void ExtractSplitCompressFile( int nSplitCount, LPCTSTR strUrl, int nVersion );
|
|||
|
|
#else // _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
HRESULT BitTorrentDownload( LPCTSTR strPatchFileUrl, LPCTSTR strFilePath, LPCTSTR strFileName );
|
|||
|
|
#endif // _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
#endif // _USE_BITTORRENT
|
|||
|
|
|
|||
|
|
DWORD GetDownloadFileSize( HINTERNET hInternetSession, CString strHttpPath ); // <20>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD> <20>Լ<EFBFBD>
|
|||
|
|
BOOL GetMD5Checksum(); // <20>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȿ<EFBFBD><C8BF> <20>˻<EFBFBD> (MD5)
|
|||
|
|
|
|||
|
|
// Apply Packing File
|
|||
|
|
PatchReturn PreApplyPakPatch(); // Pak<61><6B><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>غ<EFBFBD><D8BA>۾<EFBFBD> (<28><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>, <20><>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
PatchReturn ApplyPakPatch(); // Pak<61><6B><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>
|
|||
|
|
PatchReturn ApplyDeleteList( CEtPackingFile& PatchSource ); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ Pak<61><6B><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
PatchReturn ApplyPatchList( CEtPackingFile& PatchSource ); // <20><>ġ <20><><EFBFBD><EFBFBD>Ʈ Pak<61><6B><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
PatchReturn ApplyCopyList( CEtPackingFile& PatchSource ); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ Pak<61><6B><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
PatchReturn GetPackingFile(); // <20><><EFBFBD>ҽ<EFBFBD> <20><>ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<><C3A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BOOL LoadPatchList(); // <20><>ġ <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
PatchReturn PatchFileExist( int nPatchFileCount, CEtPackingFile& PatchSource, SPackingFileInfo* pFileInfo, BOOL& bPatch );
|
|||
|
|
PatchReturn PatchFileSuitableSpace( CEtPackingFile& PatchSource, SPackingFileInfo* pFileInfo, BOOL& bPatch );
|
|||
|
|
void PatchFileReserve( int nPatchFileCount, SPackingFileInfo* pFileInfo );
|
|||
|
|
|
|||
|
|
void SendStatusMsg( DownloadPatchState nID ); // <20><><EFBFBD>̾<EFBFBD><CCBE>α<CEB1> <20>ٿ<EFBFBD><D9BF>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
BOOL ProcessFullVersionPatch(); // Ǯ <20><><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>
|
|||
|
|
BOOL SaveVersionFile( CString& szFilePath, int nVersion ); // <20><>ġ <20>Ϸ<EFBFBD> <20><> Version.cfg <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
BOOL SaveNewVersionToPak( int nVersion ); // Version.cfg<66><67><EFBFBD><EFBFBD> Pak<61><6B><EFBFBD><EFBFBD> <20>ȿ<EFBFBD> <20>ֱ<EFBFBD>
|
|||
|
|
|
|||
|
|
void RecordFileExceptionLog( CFileException& e );
|
|||
|
|
|
|||
|
|
#ifdef _USE_RTPATCH
|
|||
|
|
BOOL ExportFile( CEtPackingFile& PakFile, const char* pExportFileName, const char* pCreateFilePath ); // pak<61><6B><EFBFBD>ϳ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ϱ<EFBFBD>
|
|||
|
|
PatchReturn ApplyRTPatch( CEtPackingFile& PatchSource, CEtPackingFile& RTPatchSource ); // <20><><EFBFBD><EFBFBD> pak<61><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RTPatch<63><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pak<61><6B><EFBFBD>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
static LPVOID CALLBACK EXPORT RTPatchCALLBACK( UINT Id, LPVOID Param );
|
|||
|
|
#endif // _USE_RTPATCH
|
|||
|
|
#ifdef _FIRST_PATCH
|
|||
|
|
BOOL CheckExistFirstPatch( int nVersion );
|
|||
|
|
#endif // _FIRST_PATCH
|
|||
|
|
|
|||
|
|
#ifdef _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
HRESULT DownLoadSplitFile( CString strUrl, int nVersion );
|
|||
|
|
DWORD GetSplitFileSizeList( CString strUrl, int nVersion, int nSplitCount, int nSplitCountCipher, std::vector<DWORD>& vecSplitFileSizeList );
|
|||
|
|
int LoadSplitCount( CString& szFilePath );
|
|||
|
|
HRESULT UnRARArchive( CString strPath, CString strRARFile );
|
|||
|
|
#endif // _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
HINTERNET m_hHttpConnection; // Http Connection Handle
|
|||
|
|
|
|||
|
|
DWORD m_dwTempFileLength; // <20>ٿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
|||
|
|
DWORD m_dwDownloadFileLength; // <20>ٿ<EFBFBD> <20>ƾ<DEBE><C6BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
|||
|
|
DWORD m_dwTotalFileLength; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
|||
|
|
DWORD m_dwTotalBytes; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
CString m_strPatchFileUrl; // Http <20><>ġ <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD>
|
|||
|
|
CString m_strPatchFileLocal; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ (<28>ٿ<EFBFBD><D9BF>ε<EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> .tmp -> .pak)
|
|||
|
|
CString m_strPatchFile; // <20><>ġ <20><><EFBFBD><EFBFBD> (pak<61><6B><EFBFBD><EFBFBD>)
|
|||
|
|
CString m_strPatchListFile; // <20><>ġ <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
float m_fRate; // Download Rate
|
|||
|
|
float m_fPercent; // Download Percent
|
|||
|
|
|
|||
|
|
DownloadPatchState m_emDownPatchState; // <20><><EFBFBD><EFBFBD> <20>ٿ<EFBFBD><D9BF>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
HWND m_hWnd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
|||
|
|
BOOL m_bTerminateThread; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>
|
|||
|
|
|
|||
|
|
std::vector<CEtPackingFile*> m_vecPackingFile; // <20><>ŷ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
std::vector<std::string> m_vecDeleteList; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
std::vector<std::string> m_vecPatchList; // <20><>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
std::vector<std::string> m_vecCopyList; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
struct stFileIndexSet
|
|||
|
|
{
|
|||
|
|
DWORD m_dwPakFileNum;
|
|||
|
|
DWORD m_dwPatchFileIndex;
|
|||
|
|
DWORD m_dwReserveFileIndex;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
std::vector<stFileIndexSet> m_vecReserveIndex; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
int m_nCurPatchCount; // <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> (<28><><EFBFBD><EFBFBD> <20><>ŷ <20><> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|||
|
|
int m_nTotalPatchCount; // <20><> <20><>ġ<EFBFBD><C4A1> (<28><><EFBFBD><EFBFBD> <20><>ŷ <20><> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|||
|
|
|
|||
|
|
#ifdef _USE_RTPATCH
|
|||
|
|
std::string m_strRTPatchTempFolder; // RTPatch <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
#endif // _USE_RTPATCH
|
|||
|
|
|
|||
|
|
#ifdef _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
HINSTANCE hUnrarDLL; // UnrarDLL <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
HANDLE (WINAPI *OpenArchiveEx)( RAROpenArchiveDataEx* pArchiveData );
|
|||
|
|
int (WINAPI *CloseArchive)( HANDLE hArcData );
|
|||
|
|
int (WINAPI *ReadRARHeader)( HANDLE hArcData, RARHeaderData *pHeaderData );
|
|||
|
|
int (WINAPI *ProcessRARFile)( HANDLE hArcData, int iOperation, char* strDestFolder, char* strDestName );
|
|||
|
|
#endif // _USE_SPLIT_COMPRESS_FILE
|
|||
|
|
};
|