From 19de8857e5d382154f691d2098ed14fb76d94ae7 Mon Sep 17 00:00:00 2001
From: Jack-PC-SSD-Win7-64-222 <1281261856@qq.com>
Date: Sat, 8 Aug 2015 15:28:23 +0800
Subject: [PATCH] update

---
 Log.h      |  17 +++--
 MtVerify.h | 201 ++++++++++++++++++++++++++---------------------------
 initsock.h |  24 +++++++
 3 files changed, 132 insertions(+), 110 deletions(-)
 create mode 100644 initsock.h

diff --git a/Log.h b/Log.h
index e47fc1d..efe4c99 100644
--- a/Log.h
+++ b/Log.h
@@ -36,7 +36,8 @@
 	CLock CLog::m_lockForSingleton;\
 	char CLog::m_ansiBuf[MAX_OUTPUT_LEN];\
 	wchar_t CLog::m_utf16Buf[MAX_OUTPUT_LEN];\
-	CLog* CLog::m_pInstance = NULL;
+	CLog* CLog::m_pInstance = NULL;\
+	TCHAR CLog::g_szFileName[1024] = { 0 };
 
 /*
 #define TRACEFUNCNAME \
@@ -46,9 +47,9 @@
 	OutputDebugString(str);\
 	UNINIT_SYM();\
 */
-#define MAX_OUTPUT_LEN 4096
-#define MAX_FILE_LEN 1024 * 1024 * 10
-static TCHAR g_szFileName[1024] = {0};
+#define MAX_OUTPUT_LEN (1024 * 64)
+#define MAX_FILE_LEN (1024 * 1024 * 10)
+//static TCHAR g_szFileName[1024] = {0};
 
 class CLog
 {
@@ -65,6 +66,7 @@ private:
 	BOOL m_bRunning;
 	FILE *m_pLogFile;
 	PROCESS_INFORMATION pi;
+	static TCHAR g_szFileName[1024];
 	static CRITICAL_SECTION m_cs;
 	static CLock m_lockForSingleton;
 	static char m_ansiBuf[MAX_OUTPUT_LEN];
@@ -323,7 +325,8 @@ protected:
 		}
 	}
 
-	WORD FormatBuf(const TCHAR *oldBuf, TCHAR *newBuf, WORD max_new_buff_len = MAX_OUTPUT_LEN){
+	DWORD FormatBuf(const TCHAR *oldBuf, TCHAR *newBuf, DWORD max_new_buff_len = MAX_OUTPUT_LEN)
+	{
 		static SYSTEMTIME st;
 		static TCHAR sztime[128];
 		memset(sztime, 0, sizeof sztime);
@@ -332,10 +335,10 @@ protected:
 			st.wYear, st.wMonth, st.wDay, (st.wDayOfWeek != 0) ? st.wDayOfWeek : 7, 
 			st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
 		lstrcpy(newBuf, sztime);
-		if(lstrlen(sztime) + lstrlen(oldBuf) < max_new_buff_len){
+		if(static_cast<DWORD>(lstrlen(sztime) + lstrlen(oldBuf)) < max_new_buff_len){
 			lstrcat(newBuf, oldBuf);
 		}
-		return static_cast<unsigned short>(lstrlen(newBuf));
+		return static_cast<DWORD>(lstrlen(newBuf));
 	}
 
 	void OutputFile(const TCHAR *buf){
diff --git a/MtVerify.h b/MtVerify.h
index 1b5ff97..1c7941a 100644
--- a/MtVerify.h
+++ b/MtVerify.h
@@ -35,7 +35,7 @@ __inline void PrintError(LPCTSTR linedesc, LPCTSTR filename, int lineno, DWORD e
 		NULL
 		);
 	_stprintf(errbuf, _T("\nThe following call failed at line %d in %s:\n\n %s\n\nReason: %s\n"), 
-		lineno, filename, linedesc, lpBuffer);
+			  lineno, filename, linedesc, lpBuffer);
 
 #ifndef _WINDOWS_
 	WriteFile(GetStdHandle(STD_ERROR_HANDLE), errbuf, lstrlen(errbuf), &numread, FALSE );
@@ -55,14 +55,12 @@ __inline void PrintError(LPCTSTR linedesc, LPCTSTR filename, int lineno, DWORD e
 
 __inline void WaitTillThreadActive(HANDLE &handle)
 {
-	if(handle != INVALID_HANDLE_VALUE)
-	{
+	if (handle != INVALID_HANDLE_VALUE) {
 		BOOL rc = FALSE;
 		DWORD ec = 0;
-		for(;;)
-		{
+		for (;;) {
 			rc = GetExitCodeThread(handle, &ec);
-			if(rc && (ec == STILL_ACTIVE))
+			if (rc && (ec == STILL_ACTIVE))
 				break;
 			Sleep(500);
 		}
@@ -72,42 +70,41 @@ __inline void WaitTillThreadActive(HANDLE &handle)
 /*
 __inline void WaitTillThreadExited(HANDLE &handle, DWORD dwMilliseconds = 3000)
 {
-	if(handle != INVALID_HANDLE_VALUE)
-	{
-		BOOL rc = FALSE;
-		DWORD ec = 0;
-		DWORD dwStart = GetTickCount();
-		for(;;)
-		{
-			if(GetTickCount() - dwStart >= dwMilliseconds)
-			{
-				::TerminateThread(handle, 0xffffffff);
-				CloseHandle(handle);
-				handle = INVALID_HANDLE_VALUE;
-				break;
-			}
-			if(handle == INVALID_HANDLE_VALUE)
-				break;
-			rc = GetExitCodeThread(handle, &ec);
-			if(rc && (ec != STILL_ACTIVE))
-			{
-				CloseHandle(handle);
-				handle = INVALID_HANDLE_VALUE;
-				break;
-			}
-			Sleep(500);
-		}
-	}
+if(handle != INVALID_HANDLE_VALUE)
+{
+BOOL rc = FALSE;
+DWORD ec = 0;
+DWORD dwStart = GetTickCount();
+for(;;)
+{
+if(GetTickCount() - dwStart >= dwMilliseconds)
+{
+::TerminateThread(handle, 0xffffffff);
+CloseHandle(handle);
+handle = INVALID_HANDLE_VALUE;
+break;
+}
+if(handle == INVALID_HANDLE_VALUE)
+break;
+rc = GetExitCodeThread(handle, &ec);
+if(rc && (ec != STILL_ACTIVE))
+{
+CloseHandle(handle);
+handle = INVALID_HANDLE_VALUE;
+break;
+}
+Sleep(500);
+}
+}
 }
 */
 
 __forceinline void WaitTillThreadExited(HANDLE &handle, DWORD dwMilliseconds = 5000)
 {
-	if(handle == INVALID_HANDLE_VALUE)
+	if (handle == INVALID_HANDLE_VALUE)
 		return;
 	DWORD ret = ::WaitForSingleObject(handle, dwMilliseconds);
-	if(ret != WAIT_OBJECT_0)
-	{	//::TerminateThread(handle, 0xffffffff);
+	if (ret != WAIT_OBJECT_0) {	//::TerminateThread(handle, 0xffffffff);
 	}
 	CloseHandle(handle);
 	handle = INVALID_HANDLE_VALUE;
@@ -115,17 +112,15 @@ __forceinline void WaitTillThreadExited(HANDLE &handle, DWORD dwMilliseconds = 5
 
 __inline LPTSTR GetModuleFilePath()
 {
-	static TCHAR szPath[MAX_PATH] = {'\0'};
-	if(lstrlen(szPath) != 0)
+	static TCHAR szPath[MAX_PATH] = { '\0' };
+	if (lstrlen(szPath) != 0)
 		return szPath;
-	
+
 	TCHAR szExe[MAX_PATH];
 	GetModuleFileName(GetModuleHandle(NULL), szExe, MAX_PATH);
 	int len = lstrlen(szExe);
-	for(int i = len; i > 0; i--)
-	{
-		if(szExe[i] == '\\')
-		{
+	for (int i = len; i > 0; i--) {
+		if (szExe[i] == '\\') {
 			szExe[i] = '\0';
 			lstrcpy(szPath, szExe);
 			break;
@@ -143,26 +138,26 @@ __inline LPTSTR GetModuleFilePath()
 //安全删除对话框类堆内存
 #define SAFEDELETEDLG(pDlg) {\
 	if ((pDlg)) {\
-		if (::IsWindow(pDlg->m_hWnd)) {\
-			(pDlg)->DestroyWindow();\
+		if (::IsWindow(pDlg->m_hWnd)) {	\
+			(pDlg)->DestroyWindow(); \
 		}\
-		delete (pDlg);\
-		(pDlg)=NULL;\
+		delete (pDlg); \
+		(pDlg) = NULL; \
 	}\
 }
 
 //关闭核心对象句柄
 #define CLOSEHANDLE(h){\
 	if (h != INVALID_HANDLE_VALUE && h != NULL) {\
-		::CloseHandle(h);\
-		h = INVALID_HANDLE_VALUE;\
+		::CloseHandle(h); \
+		h = INVALID_HANDLE_VALUE; \
 	}\
 }
 
 #define CLOSESOCKET(s){\
-	if(s != INVALID_SOCKET){\
+	if (s != INVALID_SOCKET) {	\
 		::closesocket(s); \
-		s = INVALID_SOCKET;\
+		s = INVALID_SOCKET; \
 	}\
 }
 
@@ -179,21 +174,21 @@ __forceinline LPSTR Utf16ToAnsi(const wchar_t * const wSrc)
 {
 	char* pElementText;
 	int iTextLen;
-	iTextLen = WideCharToMultiByte( CP_ACP,	0, wSrc, -1, NULL,0, NULL, NULL );
+	iTextLen = WideCharToMultiByte(CP_ACP, 0, wSrc, -1, NULL, 0, NULL, NULL);
 	pElementText = new char[iTextLen + 1];
-	memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );
-	::WideCharToMultiByte( CP_ACP,0,wSrc,-1,pElementText,iTextLen,NULL,NULL);
+	memset((void*)pElementText, 0, sizeof(char)* (iTextLen + 1));
+	::WideCharToMultiByte(CP_ACP, 0, wSrc, -1, pElementText, iTextLen, NULL, NULL);
 
 	return pElementText;
 }
 
-__forceinline BOOL Utf16ToAnsiUseCharArray(const wchar_t * const wSrc, 
-										   char *ansiArr, WORD ansiArrLen)
+__forceinline BOOL Utf16ToAnsiUseCharArray(const wchar_t * const wSrc,
+										   char *ansiArr, DWORD ansiArrLen)
 {
-	int iTextLen = WideCharToMultiByte( CP_ACP,	0, wSrc, -1, NULL,0, NULL, NULL );
-	if(iTextLen < ansiArrLen){
-		memset( ( void* )ansiArr, 0, sizeof( char ) * ( iTextLen + 1 ) );
-		::WideCharToMultiByte(CP_ACP,0,wSrc,-1,ansiArr,iTextLen,NULL,NULL);
+	int iTextLen = WideCharToMultiByte(CP_ACP, 0, wSrc, -1, NULL, 0, NULL, NULL);
+	if (static_cast<DWORD>(iTextLen) < ansiArrLen) {
+		memset((void*)ansiArr, 0, sizeof(char)* (iTextLen + 1));
+		::WideCharToMultiByte(CP_ACP, 0, wSrc, -1, ansiArr, iTextLen, NULL, NULL);
 		return TRUE;
 	}
 	return FALSE;
@@ -202,21 +197,21 @@ __forceinline BOOL Utf16ToAnsiUseCharArray(const wchar_t * const wSrc,
 __forceinline wchar_t* AnsiToUtf16(PCSTR ansiSrc)
 {
 	wchar_t *pWide;
-	int  iUnicodeLen = ::MultiByteToWideChar( CP_ACP,
-        0, ansiSrc, -1, NULL, 0);
-	pWide = new  wchar_t[iUnicodeLen + 1]; 
-	memset(pWide, 0, (iUnicodeLen+1) * sizeof(wchar_t) );
-	::MultiByteToWideChar( CP_ACP, 0, ansiSrc, -1, (LPWSTR)pWide, iUnicodeLen );  
+	int iUnicodeLen = ::MultiByteToWideChar(CP_ACP,
+											 0, ansiSrc, -1, NULL, 0);
+	pWide = new wchar_t[iUnicodeLen + 1];
+	memset(pWide, 0, (iUnicodeLen + 1) * sizeof(wchar_t));
+	::MultiByteToWideChar(CP_ACP, 0, ansiSrc, -1, (LPWSTR)pWide, iUnicodeLen);
 	return pWide;
 }
 
 __forceinline BOOL AnsiToUtf16Array(PCSTR ansiSrc, wchar_t* warr, int warr_len)
 {
-	int  iUnicodeLen = ::MultiByteToWideChar( CP_ACP,
-        0, ansiSrc, -1, NULL, 0);
-	if(warr_len >= iUnicodeLen){
-		memset(warr, 0, (iUnicodeLen+1) * sizeof(wchar_t) );
-		::MultiByteToWideChar( CP_ACP, 0, ansiSrc, -1, (LPWSTR)warr, iUnicodeLen );
+	int iUnicodeLen = ::MultiByteToWideChar(CP_ACP,
+											 0, ansiSrc, -1, NULL, 0);
+	if (warr_len >= iUnicodeLen) {
+		memset(warr, 0, (iUnicodeLen + 1) * sizeof(wchar_t));
+		::MultiByteToWideChar(CP_ACP, 0, ansiSrc, -1, (LPWSTR)warr, iUnicodeLen);
 		return TRUE;
 	}
 	return FALSE;
@@ -225,11 +220,11 @@ __forceinline BOOL AnsiToUtf16Array(PCSTR ansiSrc, wchar_t* warr, int warr_len)
 __forceinline wchar_t* Utf8ToUtf16(PCSTR ansiSrc)
 {
 	wchar_t *pWide;
-	int  iUnicodeLen = ::MultiByteToWideChar( CP_UTF8,
-		0, ansiSrc, -1, NULL, 0);
-	pWide = new  wchar_t[iUnicodeLen + 1]; 
-	memset(pWide, 0, (iUnicodeLen+1) * sizeof(wchar_t) );
-	::MultiByteToWideChar( CP_UTF8, 0, ansiSrc, -1, (LPWSTR)pWide, iUnicodeLen );  
+	int  iUnicodeLen = ::MultiByteToWideChar(CP_UTF8,
+											 0, ansiSrc, -1, NULL, 0);
+	pWide = new  wchar_t[iUnicodeLen + 1];
+	memset(pWide, 0, (iUnicodeLen + 1) * sizeof(wchar_t));
+	::MultiByteToWideChar(CP_UTF8, 0, ansiSrc, -1, (LPWSTR)pWide, iUnicodeLen);
 	return pWide;
 }
 
@@ -243,37 +238,37 @@ __inline const char* Utf16ToUtf8(const wchar_t* utf16, int& out_len)
 }
 
 
-__inline const char* Utf16ToGbk(const wchar_t* utf16)
-{
-	//WideCharToMultiByte(CP_GBK)
-}
+//__inline const char* Utf16ToGbk(const wchar_t* utf16)
+//{
+//	//WideCharToMultiByte(CP_GBK)
+//}
 
 
 /*
 __forceinline CString GetFileVersion()
-{   
-	int iVerInfoSize;
-	char *pBuf;
-	CString asVer= _T("");
-	VS_FIXEDFILEINFO *pVsInfo;
-	unsigned int iFileInfoSize = sizeof(VS_FIXEDFILEINFO);
-	TCHAR fileName[MAX_PATH];
-	GetModuleFileName(NULL, fileName, MAX_PATH);
-	iVerInfoSize = GetFileVersionInfoSize(fileName, NULL); 
-    
-	if(iVerInfoSize != 0){   
-		pBuf = new char[iVerInfoSize];
-		if(GetFileVersionInfo(fileName, 0, iVerInfoSize, pBuf)){   
-			if(VerQueryValue(pBuf, _T("//"), (void**)&pVsInfo, &iFileInfoSize)){   
-				asVer.Format(_T("%d.%d.%d.%d"),
-					HIWORD(pVsInfo->dwFileVersionMS),
-					LOWORD(pVsInfo->dwFileVersionMS),
-					HIWORD(pVsInfo->dwFileVersionLS),
-					LOWORD(pVsInfo->dwFileVersionLS));
-			}   
-		}   
-		delete pBuf;   
-	}   
-	return asVer;   
-}  
+{
+int iVerInfoSize;
+char *pBuf;
+CString asVer= _T("");
+VS_FIXEDFILEINFO *pVsInfo;
+unsigned int iFileInfoSize = sizeof(VS_FIXEDFILEINFO);
+TCHAR fileName[MAX_PATH];
+GetModuleFileName(NULL, fileName, MAX_PATH);
+iVerInfoSize = GetFileVersionInfoSize(fileName, NULL);
+
+if(iVerInfoSize != 0){
+pBuf = new char[iVerInfoSize];
+if(GetFileVersionInfo(fileName, 0, iVerInfoSize, pBuf)){
+if(VerQueryValue(pBuf, _T("//"), (void**)&pVsInfo, &iFileInfoSize)){
+asVer.Format(_T("%d.%d.%d.%d"),
+HIWORD(pVsInfo->dwFileVersionMS),
+LOWORD(pVsInfo->dwFileVersionMS),
+HIWORD(pVsInfo->dwFileVersionLS),
+LOWORD(pVsInfo->dwFileVersionLS));
+}
+}
+delete pBuf;
+}
+return asVer;
+}
 */
\ No newline at end of file
diff --git a/initsock.h b/initsock.h
new file mode 100644
index 0000000..23cddd9
--- /dev/null
+++ b/initsock.h
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////
+// initsock.h文件
+
+#include <winsock2.h>
+#pragma comment(lib, "WS2_32")	// 链接到WS2_32.lib
+
+class CInitSock		
+{
+public:
+	CInitSock(BYTE minorVer = 2, BYTE majorVer = 2)
+	{
+		// 初始化WS2_32.dll
+		WSADATA wsaData;
+		WORD sockVersion = MAKEWORD(minorVer, majorVer);
+		if(::WSAStartup(sockVersion, &wsaData) != 0)
+		{
+			ExitProcess(0);
+		}
+	}
+	~CInitSock()
+	{	
+		::WSACleanup();	
+	}
+};
-- 
2.18.1