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_)