瀏覽代碼

修复PipeClient使用Byte字节传输,而PipeServer使用TCHAR接收,导致部分数据失效的问题。

JeffWang 3 年之前
父節點
當前提交
d4e00670a0

+ 3 - 7
Source/OGCAssist/OGCAssist/PipeClient.cpp

@@ -102,8 +102,6 @@ DWORD CPipeClient::ConnectThread(LPVOID lpParam)
 #pragma region 向服务端发送消息:劫持状态+按钮状态;			
 			{
 				MSG_INFO msg;
-				msg.dwClientId = GetCurrentProcessId();
-				_stprintf(msg.szClientName, _T("%s"), _T("OGCAssist"));
 				// 连接状态;
 				msg.byResult = Assist::bConnectStatus;
 				_stprintf((TCHAR*)msg.byData, _T("%s"), _T("OGCAssist Connect"));
@@ -119,14 +117,12 @@ DWORD CPipeClient::ConnectThread(LPVOID lpParam)
 #pragma region 通知服务端劫持状态;
 			{
 				MSG_INFO msg;
-				msg.dwClientId = GetCurrentProcessId();
-				_stprintf(msg.szClientName, _T("%s"), _T("OGCAssist"));
 				// 劫持状态;
 				msg.byResult = Assist::bHijacked;
 				_stprintf((TCHAR*)msg.byData, _T("%s"), _T("OGCAssist Hijact"));
 
 				DATAHEADER head;				
-				head.byMsgType = C2S_INJECT;
+				head.byMsgType = C2S_HIJACK;
 				head.dwPackageLen = sizeof(DATAHEADER) + sizeof(MSG_INFO);
 
 				Utility::g_pPipeClient->SendPackage(head, msg);
@@ -359,9 +355,9 @@ void CPipeClient::HandleMsg(DATAHEADER &head, MSG_INFO &msg)
 	// 正常处理流程;
 	switch(head.byMsgType)
 	{
-	case S2C_INJECT:		// 劫持dll;
+	case S2C_HIJACK:		// 劫持dll;
 		break;
-	case S2C_EJECT:			// 恢复dll;
+	case S2C_RESUME:		// 恢复dll;
 		break;
 	case S2C_CONNECT:		// 触发connect按钮;
 		break;

+ 19 - 2
Source/OGCAssistTool/OGCAssistTool/PipeService.cpp

@@ -482,6 +482,16 @@ void CIOCPPipe::RecvProcess(PER_PIPE_CONTEXT* pPipeContext, PER_IO_CONTEXT* pIoC
 
 		switch( header.byMsgType )
 		{
+		case C2S_HIJACK:
+			{
+				GLOBAL::g_procWndInfo.bHijackStatus = msg_info.byResult;
+			}
+			break;
+		case C2S_RESUME:
+			{
+				GLOBAL::g_procWndInfo.bHijackStatus = !msg_info.byResult;
+			}
+			break;
 		case C2S_CONNECT:
 			{
 				GLOBAL::g_procWndInfo.bConnectStatus = msg_info.byResult;
@@ -489,7 +499,7 @@ void CIOCPPipe::RecvProcess(PER_PIPE_CONTEXT* pPipeContext, PER_IO_CONTEXT* pIoC
 			break;
 		case C2S_DISCONNECT:
 			{
-				GLOBAL::g_procWndInfo.bConnectStatus = FALSE;
+				GLOBAL::g_procWndInfo.bConnectStatus = !msg_info.byResult;
 			}
 			break;
 		case C2S_CHECKFW:
@@ -504,7 +514,14 @@ void CIOCPPipe::RecvProcess(PER_PIPE_CONTEXT* pPipeContext, PER_IO_CONTEXT* pIoC
 			break;
 		case C2S_GO:
 			{
-
+				if ( msg_info.byResult )
+				{
+					// Ö´Ðгɹ¦;
+				}
+				else
+				{
+					// Ö´ÐÐʧ°Ü;
+				}
 			}
 			break;
 		default:

+ 1 - 1
Source/OGCAssistTool/OGCAssistTool/PipeService.h

@@ -24,7 +24,7 @@ typedef struct _PER_IO_CONTEXT
     HANDLE m_PipeAccept;
     OPERATION_TYPE m_OpType;
 	// 接收客户端的消息;
-    TCHAR szBuffer[BUFSIZE];
+    BYTE szBuffer[BUFSIZE];
     DWORD dwBufferLine;
 	// 发送给客户的消息;
     //TCHAR chReply[BUFSIZE];