2019-01-05 20:21:43 +08:00
|
|
|
|
// KernelManager.h: interface for the CKernelManager class.
|
|
|
|
|
|
//
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#if !defined(AFX_KERNELMANAGER_H__B1186DC0_E4D7_4D1A_A8B8_08A01B87B89E__INCLUDED_)
|
|
|
|
|
|
#define AFX_KERNELMANAGER_H__B1186DC0_E4D7_4D1A_A8B8_08A01B87B89E__INCLUDED_
|
|
|
|
|
|
|
|
|
|
|
|
#if _MSC_VER > 1000
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#endif // _MSC_VER > 1000
|
|
|
|
|
|
|
|
|
|
|
|
#include "Manager.h"
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
2024-12-27 01:40:40 +08:00
|
|
|
|
#define MAX_THREADNUM 0x1000>>2
|
2024-12-24 18:08:26 +08:00
|
|
|
|
|
|
|
|
|
|
// <20>߳<EFBFBD><DFB3><EFBFBD>Ϣ<EFBFBD>ṹ<EFBFBD><E1B9B9>, <20><><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD>Ա: <20><><EFBFBD><EFBFBD>״̬(run)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(h)<29><>ͨѶ<CDA8>ͻ<EFBFBD><CDBB><EFBFBD>(p).
|
2019-01-05 20:21:43 +08:00
|
|
|
|
struct ThreadInfo
|
|
|
|
|
|
{
|
2019-01-12 18:21:42 +08:00
|
|
|
|
BOOL run;
|
2019-01-05 20:21:43 +08:00
|
|
|
|
HANDLE h;
|
|
|
|
|
|
IOCPClient *p;
|
2025-03-13 23:34:33 +08:00
|
|
|
|
void* user;
|
2025-04-06 19:35:20 +08:00
|
|
|
|
CONNECT_ADDRESS* conn;
|
|
|
|
|
|
ThreadInfo() : run(TRUE), h(NULL), p(NULL), user(nullptr), conn(nullptr){ }
|
2019-01-05 20:21:43 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class CKernelManager : public CManager
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
2025-04-06 19:35:20 +08:00
|
|
|
|
CONNECT_ADDRESS* m_conn;
|
|
|
|
|
|
HINSTANCE m_hInstance;
|
|
|
|
|
|
CKernelManager(CONNECT_ADDRESS* conn, IOCPClient* ClientObject, HINSTANCE hInstance);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
virtual ~CKernelManager();
|
|
|
|
|
|
VOID OnReceive(PBYTE szBuffer, ULONG ulLength);
|
|
|
|
|
|
|
2024-12-24 18:08:26 +08:00
|
|
|
|
ThreadInfo m_hThread[MAX_THREADNUM];
|
|
|
|
|
|
// <20><>ֵ<EFBFBD><D6B5>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD>¼<EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱm_hThread<61><64>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD><C2B3><EFBFBD><EFBFBD>쳣
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD>ֵ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>Ϊ"<22><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3>±<EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_hThread<61><64><EFBFBD><EFBFBD>ָλ<D6B8>ÿ<EFBFBD><C3BF>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>̷߳<DFB3><CCB7><EFBFBD><EFBFBD>ڸ<EFBFBD>λ<EFBFBD><CEBB>
|
2019-01-05 20:21:43 +08:00
|
|
|
|
ULONG m_ulThreadCount;
|
2024-12-24 18:08:26 +08:00
|
|
|
|
UINT GetAvailableIndex();
|
2019-01-05 20:21:43 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // !defined(AFX_KERNELMANAGER_H__B1186DC0_E4D7_4D1A_A8B8_08A01B87B89E__INCLUDED_)
|