我曾经看到挂钩程序的Dll中有这样一个函数
bool installhook(DWORD thread_id)
{
.......
}在客户端,为了调用这个函数,在将DLL装入以后,他使用了函数指针来进行操作,上面是这样的。typedef bool (*inshook)(DWORD);
inshook installhook;//对应installhook的函数指针后面的程序就开始用到这个函数指针调用DLL中的函数了
installhook(THIREAD_ID);THIREAD_ID为某个线程的ID谁能告述我啊?
bool installhook(DWORD thread_id)
{
.......
}在客户端,为了调用这个函数,在将DLL装入以后,他使用了函数指针来进行操作,上面是这样的。typedef bool (*inshook)(DWORD);
inshook installhook;//对应installhook的函数指针后面的程序就开始用到这个函数指针调用DLL中的函数了
installhook(THIREAD_ID);THIREAD_ID为某个线程的ID谁能告述我啊?
就好像typedef int myint;
这样就可以用myint来定义变量了
myint i; //实际i就是int类型
函数指针同样typedef bool (*inshook)(DWORD);
就是定义inshook为一个函数指针,是一个什么类型的指针呢?是一个返回值为bool,参数为DWORD的函数。这样inshook就可以作为一种函数类型(如同简单类型int,float,bool一样),用来定义函数了:
inshook installhook; //定义installhook为一个inshook类型函数所以后面就可以使用这个函数了,就像使用变量i一样
很奇怪的语法,一般情况下是:
extern "C" __declspec(dllexport) bool installhook(DWORD);如果是指针,用法好像该是:
(*installhook)(THREAD_ID);
意思是新生成一个类型,类型名为inshook(以后直接使用这个名称声明变量)
这个新类型是一个指针,而这个指针指向一个函数,
而这个函数又具有如下特征,返回值bool类型,需要一个参数,参数类型为DWORD
installhook(THREAD_ID);这样来调用函数,我不太明白,而且我试过,这样可以得到正确的结果,为什么啊?