www.pudn.com > HookAPI > Filter.cpp


#include "stdafx.h" 
#include  
#include  
#include  
#include "util.h" 
#include "Filter.h" 
 
char g_dll_path[128]; 
 
CFilter::CFilter() 
{ 
	m_pFilterInfo =NULL; 
	m_nFilterInfoCount =0; 
	 
	FILE *fp; 
 
	if(GetProfileString("HookAPI", "dll_path", "", g_dll_path, sizeof(g_dll_path)) ==0) 
		return; 
	char init_file[128]; 
 
	wsprintf(init_file, "%s\\filterhp.ini", g_dll_path); 
	//WriteLog("FilterInit:init_file=%s", init_file); 
	if((fp =fopen(init_file, "r")) ==NULL) 
	{ 
		WriteLog("CFilter: can not found init file %s", init_file); 
		return; 
	} 
	char buf[256]; 
	while(!feof(fp) && fgets(buf, sizeof(buf), fp)) 
	{ 
		if(strlen(buf) <3 || buf[0] =='#') continue; 
		if(buf[strlen(buf)-1] =='\r' || buf[strlen(buf)-1] =='\n') 
			buf[strlen(buf)-1] =0; 
		if(buf[strlen(buf)-2] =='\r' || buf[strlen(buf)-2] =='\n') 
			buf[strlen(buf)-2] =0; 
		 
		if(m_pFilterInfo) 
			m_pFilterInfo =(FILTER_INFO *)realloc(m_pFilterInfo, (m_nFilterInfoCount+1)*sizeof(FILTER_INFO)); 
		else 
			m_pFilterInfo =(FILTER_INFO *)malloc((m_nFilterInfoCount+1)*sizeof(FILTER_INFO)); 
		strcpy(m_pFilterInfo[m_nFilterInfoCount].app, buf); 
		//WriteLog("init:%s", buf); 
		m_nFilterInfoCount++; 
	} 
} 
 
CFilter::~CFilter() 
{ 
	if(m_pFilterInfo) 
		free(m_pFilterInfo); 
} 
 
int CFilter::FilterName(char *name) 
{ 
	for(int i=0; i