⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wz_um.h

📁 奇迹世界更新程序源代码,其中包括一些文档
💻 H
字号:
//////////////////////////////////////////////////////////////////////////
// 	Wenzen Update Module Ver 0.2 
//
//	Build By Cho Jae Sik
//
//  First Release 20051219
//
//////////////////////////////////////////////////////////////////////////


#pragma warning (disable : 4786)

#ifndef	_WZ_UPDATE_MODULE_DLL_
#define	_WZ_UPDATE_MODULE_DLL_

#include <windows.h>
#include <wininet.h>
#include <process.h>		// _beginthread()
#include <io.h>				// _access()
#include <map>
#include <string>
#include "UpdateDefine.h"
#include "UpdateInfo.h"
using namespace std;


typedef VOID (* LPFUNC_RECEIVEEVENT) (	// 荤侩磊 沥狼 惑炔舅覆 妮归窃荐
	INT iEvent,						// 捞亥飘 辆幅
	LPVOID lpOBJ,					// 捞亥飘甫 逞变 按眉 器牢磐 (CWZFtpUpdateModule * / CWZHttpUpdateModule *)
	UPDATING_FILEINFO_STRUCT & strtUpdatingInfo	// 泅犁狼 诀单捞飘 惑炔沥焊 备炼眉
);


///////////////////////////////////////////////////////////////////////////////////////
/*
	扁夯 诀单捞飘 努贰胶 : 捞 努贰胶俊辑 FTP 客 HTTP 诀单捞飘 努贰胶啊 惑加 罐绰促.
*/

class WZ_DECLAREDLL CWZUpdateModule
{
protected :
	static enum {	// 捞亥飘 辆幅
		STATE_CONNECTING,					// 泅犁 立加吝
		STATE_CONNECTED,					// 楷搬凳
		STATE_DISCONNECTED,					// 楷搬臼凳
		STATE_FILE_DOWNLOADING				// 颇老 罐绰吝
	};

	static enum {
		ERROR_NONE,
		ERROR_USER,
		ERROR_SYSTEM
	};

	CHAR	m_szIPADDR[MAX_PATH];				// IP林家
	WORD	m_wPORT;							// 器飘锅龋
	CHAR	m_szID[MAX_PATH];					// 拌沥疙
	CHAR	m_szPASS [MAX_PATH];				// 厚剐锅龋
	string	m_strDownDirectory;					// 肺拿狼 促款肺靛且 叼泛配府
	CHAR	m_szDefaultDirectory[MAX_PATH];		// FTP辑滚狼 滚傈颇老捞 粮犁窍绰 叼泛配府
	CHAR	m_szVersionFileName[MAX_PATH];		// 滚傈颇老狼 捞抚阑 历厘 (滚傈颇老篮 风飘俊 乐绰巴阑 盔蘑栏肺 茄促.)
	BYTE	m_bSKIP_UPDATE;						// 捞 蔼捞 TRUE老 版快 捞锅狼 诀单捞飘甫 清畔 扒呈顿扼绰 敲贰弊 (FALSE肺 官差绢具 茄促.)

	// Thread 
	HANDLE			m_hUpdateThread;
	unsigned int	m_nUpdateThreadID;

	UPDATE_FOLDERINFO_STRUCT m_strtUpdateFolderInfo[MAX_FOLDERINFO];	// 诀单捞飘 弃歹狼 格废阑 历厘且 备炼眉
	UINT m_uUpdateFolderCount;											// 诀单捞飘 辑滚俊 乐绰 弃歹狼 俺荐

	INT				m_iLastErrorMode;												// 付瘤阜 俊矾啊 荤侩磊 俊矾牢瘤 矫胶袍 俊矾牢瘤?
	INT				m_iLastErrorCode;												// 付瘤阜 俊矾 锅龋 历厘
	CHAR			m_szLastErrorMsg [MAX_PATH];									// 付瘤阜 俊矾 皋矫瘤 历厘

	// 楷搬包访 函荐甸 (裹侩)
	HINTERNET		m_hINET_SESSION;					// 牢磐齿 技记 勤甸
	INT				m_iCurrentState;					// 泅犁 按眉狼 柳青惑怕甫 历厘 (罐绰 吝俊 Connect() 窍芭唱 楷搬臼登菌绰单 Disconnect() 窍瘤 臼档废)
	BOOL			m_bCancelUpdate;					// 诀单捞飘吝 累诀阑 秒家窍绰 版快俊 措茄 牢磊
	BOOL			m_bUseEventProc;					// EventProceure甫 劝己拳 矫懦扒瘤俊 措茄 牢磊

	UPDATING_FILEINFO_STRUCT	m_strtUpdatingFileInfo;							// 妮归 窃荐俊 泅犁狼 诀单捞飘 柳青惑炔阑 逞辨 备炼眉
	LPFUNC_RECEIVEEVENT			m_lpFN_EventCallbackProc;						// 荤侩磊 沥狼 妮归窃荐 器牢磐

public :
	CWZUpdateModule ();
	CWZUpdateModule (LPSTR lpszIPADDR, WORD wPORT, LPSTR lpszID, LPSTR lpszPASS);
	virtual ~CWZUpdateModule ();

	virtual BOOL 		Connect ()  = 0;
	virtual BOOL 		Connect (LPSTR lpszIPADDR, WORD wPORT, LPSTR lpszID, LPSTR lpszPASS) = 0;
	virtual VOID 		Disconnect () = 0;

	virtual BOOL		StartUpdate();
	eRESULT_CONSTANT	CheckUpdateFiles();
	// 泅犁 楷搬捞 己赋沁促绰 啊沥窍俊 秦寸 版肺狼 颇老阑 促款肺靛 罐绰促. (拱沸 楷搬臼等 惑怕扼搁 俊矾惯积)
	virtual BOOL		DownloadFile (LPSTR lpszRemoteFilePath,	LPSTR lpszLocalFilePath = "") = 0;

	virtual VOID		SetLastErrorMsg (INT iERROR_MODE, INT iERROR_CODE, LPSTR szUSER_MSG = NULL);	
	virtual const LPSTR	GetLastErrorMsg ();
	virtual const INT	GetLastErrorCode ();

	virtual BOOL		UpdateStop();									// 诀单捞飘甫 吝瘤茄促.
	virtual BOOL		SetEventCallBackProc (LPFUNC_RECEIVEEVENT lpFN_EventCallbackFunc );
			void		SetUseEventProc(BOOL bUse = TRUE);				// 捞亥飘 
			void		SetVersionFile( const char* pszFile );
		   char*		GetVersionFile(){return m_szVersionFileName;}
			void		SetDownloadDirectory(const char* pszDirectory);
	const string		GetDownloadDirectory();
			void		GetLocalDownAbsoluteDir(string strRelativeDir, string& strAbsolteDir);
			void		GetModuleDirectory( char* szDirPath, int nSize );
			BOOL		Init();
			char*		GetIP(){ return m_szIPADDR; }
			WORD		GetPort(){ return m_wPORT; }
			void		SetDefaultDirectory( char* pszDir );
			char*		GetDefaultDirectory(){ return m_szDefaultDirectory; }
			void		GetVersionFilePath( TCHAR* pszVerFilePath, int nSize );		//滚傈颇老狼 版肺甫 掘绢柯促.
			void		GetFileListFilePath( char* pszFileName, int nSize, const char* pszVerFolder );		//File List 颇老狼 版肺甫 掘绢柯促.
			void		GetVersionFolderPath( char* pszFileName, int nSize, const char* pszVerFolder );	//
			void		GetServerName( char* pszServerName, int nSize );			//泅犁 促款罐绰 秦寸 辑滚狼 捞抚阑 备茄促.

protected :
			BOOL 		LoadLocalVerInfo ();	// 券版汲沥 颇老俊辑 泅犁 滚傈沥焊 殿阑 阂矾柯促.
			BOOL 		SaveLocalVerInfo ();	// 券版汲沥 颇老俊 泅犁 滚傈沥焊 殿阑 历厘茄促.

	virtual BOOL 		CheckVersion (LPSTR lpszFilePath);				// 秦寸 版肺狼 滚傈颇老俊辑 泅犁 滚傈阑 佬绊 (绝栏搁 滚傈 0), 楷搬等 风飘狼 漂沥 滚傈颇老苞 厚背茄促.
	virtual BOOL 		UpdateRun();									// 秦寸 版肺狼 格废颇老俊辑 罐阑 颇老狼 格废阑 累己茄促.
	virtual BOOL 		AddEvent(int nEvent);
			void		GetVersionFromString( char* pszVersion, byte& byVer1, byte& byVer2, byte& byVer3   );
	unsigned int 		GetTotalVersion( const byte byVer1, const byte byVer2, const byte byVer3 );
			void		SetDefaultData(void);
	virtual	BOOL		DownloadFilesOnFileList( char* pszRemoteDirPath ) = 0;
			BOOL		CheckLiveProcess();


	static unsigned __stdcall UpdateWorkerThread (LPVOID lpParam);

protected:
	CRITICAL_SECTION	m_critERROR_MSG;							// 俊矾 历厘窍绰 累诀阑 焊龋窍扁 困窃

public:
	CUpdateInfo			m_info;
	int					m_nServerNumber;							// 泅犁 诀单捞飘 窍妨绰 辑滚狼 郴何 锅龋

	// 肺拿俊 乐绰 滚傈 沥焊
	BYTE 				m_btLocalVer1;
	BYTE 				m_btLocalVer2;
	BYTE 				m_btLocalVer3;
	UINT 				m_uLocalTotalVersion;
	BOOL				m_bLoadUpdateInfo;


	BOOL				IsUpdateInfoLoad(){ return m_bLoadUpdateInfo; }
};



///////////////////////////////////////////////////////////////////////////////////////
/*
	FTP 诀单捞飘 努贰胶 : 扁夯 努贰胶俊辑 惑加 罐澜
*/


class WZ_DECLAREDLL CWZFtpUpdateModule : public CWZUpdateModule
{
	// 楷搬包访 函荐甸 (FTP)
	HINTERNET	m_hFTP_CONNECTION;
	CHAR		m_FTP_cBUFFER[MAX_BUFFER];

	HANDLE			m_hCheckThread;
	unsigned int	m_nCheckThreadID;
	BOOL			m_bConnected;


public :
	CWZFtpUpdateModule ();
	CWZFtpUpdateModule (LPSTR lpszIPADDR, WORD wPORT, LPSTR lpszID, LPSTR lpszPASS);
	virtual ~CWZFtpUpdateModule ();

	virtual BOOL Connect ();
	virtual BOOL Connect (LPSTR lpszIPADDR,  WORD wPORT= PORT_FTP, LPSTR lpszID=NULL, LPSTR lpszPASS=NULL);
	virtual VOID Disconnect ();

	virtual BOOL DownloadFile (LPSTR lpszRemoteFilePath, LPSTR lpszLocalPath = "");
			BOOL SetEventProc (LPFUNC_RECEIVEEVENT lpFN_EventCallbackFunc );
			BOOL IsConnected(){return m_bConnected;}

private:
	BOOL				GetSplitFilePath(const char* pszFilePath, char* pszDir, char* pszFile);
	BOOL				GetLocalFileName(const char* pszLocalPath, const char* pszRemoteFileName, char* pszLocalFilePath);
	HANDLE				MakeLocalFile(const char* pszLocalFilePath);
	BOOL				SetRemoteDirectory(const char* pszRemoteDir);
	BOOL				GetRemoteFileInfo(const char* pszRemoteFile, DWORD& dwFileLength, FILETIME& fileTime);
	HINTERNET			OpenRemoteFile(const char* pszRemoteFile);
	eRESULT_CONSTANT	GetRemoteFile(const HINTERNET hRemoteFile, const HANDLE hLocalFile, DWORD dwFileLength);
	BOOL				DownloadFilesOnFileList(char* pszRemoteDirPath );
	BOOL				CanDownloadFile(string strLocalFilePath, string strRemoteFileName);

public:
	static unsigned __stdcall CheckConnectThread (LPVOID lpParam);
};


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -