www.pudn.com > ProcessProtect.rar > Protect.h
// Protect.h: interface for the CProtect class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PROTECT_H__3A417D54_1CB1_4CA9_970A_04E087B731C8__INCLUDED_)
#define AFX_PROTECT_H__3A417D54_1CB1_4CA9_970A_04E087B731C8__INCLUDED_
#include "ProcessProtect.h"
//#define MAX_PROCESS_COUNT 256
#define MAX_HANDLE_COUNT 50
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
typedef struct//需要保护的进程信息结构
{
DWORD dwProcessId ;
HANDLE hProcess ;
LPTSTR pszFileName ;
}PROCESS_PROTECT_INFO,*PPROCESS_PROTECT_INFO;
class CProtect
{
public:
void Release();
BOOL Init();
DWORD GetLastError();
BOOL RemoveProcessId(HANDLE hUserHandle);
HANDLE AddProcessId(DWORD dwProcessId);
CProtect();
virtual ~CProtect();
protected:
int GetFreeIndex();
int FindProcessProtectInfo(DWORD dwProcessId);
DWORD GetProcessProtectCount();
CRITICAL_SECTION m_criticalSection;
int ResetProcessHandle(HANDLE* pArrayHandle);
HANDLE StartupProcess(LPTSTR pszFileName,LPDWORD pdwProcessId);
int GetProcessProtectInfo(HANDLE hProcess,PPROCESS_PROTECT_INFO pProcessProtectInfo);
static __declspec(thread) DWORD m_dwLastError ;//最后一次进行操作的错误值
PROCESS_PROTECT_INFO m_ProcessProtectInfo[MAX_HANDLE_COUNT] ;
HANDLE m_hExitCheckThreadEvent;
HANDLE m_hCheckThread;
HANDLE m_hNewProcessEvent ;
HANDLE m_hStartupProcessMutex ;
static unsigned int __stdcall CheckProcessThreadProc(LPVOID pContext);
BOOL SetDebugPrivilege(BOOL bEnable);
};
#endif // !defined(AFX_PROTECT_H__3A417D54_1CB1_4CA9_970A_04E087B731C8__INCLUDED_)