www.pudn.com > HookAPI > ApiInfo.h


// APIInfo.h: interface for the CAPIInfo class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_APIINFO_H__48FBE38B_70DC_4906_A99D_4314ED371ECF__INCLUDED_) 
#define AFX_APIINFO_H__48FBE38B_70DC_4906_A99D_4314ED371ECF__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
typedef void (WINAPI *APIFUNC)(void); 
 
typedef struct tagAPIINFO 
{ 
	char module_name[100]; 
	char api_name[50]; 
	char my_api_name[50]; 
	char my_friend_api_name[50]; 
	int param_count; 
	int start_pos; 
	APIFUNC old_api, my_api; 
	int f_hooked; 
	BYTE save_bytes[20]; 
#ifdef WIN95 
	HANDLE hMutex, m_hMutex; 
#else 
	CRITICAL_SECTION cs; 
	DWORD old_protection_flags; 
#endif 
	tagAPIINFO *pnext; 
}APIINFO; 
 
class CAPIInfo 
{ 
public: 
	CAPIInfo(); 
	virtual ~CAPIInfo(); 
	 
	int m_count; 
	APIINFO *m_pInfo; 
 
	APIINFO *Add(char *module_name, char *api_name, char *my_api_name, 
		int param_count, APIFUNC old_api=NULL, APIFUNC my_api =NULL, 
		char *my_friend_api_name =NULL, int start_pos=0); 
	int DeleteAll(); 
	 
	APIINFO *FindByMyAPI(APIFUNC my_api); 
	APIINFO *FindByOldAPI(APIFUNC old_api); 
	APIINFO *FindByAPIName(char *api_name); 
	APIINFO *FindByMyAPIName(char *my_api_name); 
 
	int lock(APIINFO *pinfo); 
	int unlock(APIINFO *pinfo); 
}; 
 
#endif // !defined(AFX_APIINFO_H__48FBE38B_70DC_4906_A99D_4314ED371ECF__INCLUDED_)