奇怪的变量:HANDLE (WINAPI *pfOpenVxDHandle)(HANDLE)
编号:QA004362
建立日期: 2001年8月19日 最后修改日期:2001年8月19日
所属类别:
李建生:
本问题涉及的操作系统 Windows 98
本问题涉及的编程工具 vc
遇到的问题
一种奇怪的变量用法。我KAREN HAZZAH的《Writing Windows VxDs and Device Drivers》书中见到一种变量的用法,感到不解。书中有例子为:HANDLE (WINAPI *pfOpenVxDHandle)(HANDLE);//此为变量定义。
pfOpenVxDHandle=(HANDLE(WINAPI*)(HANDLE))GetProcAddress(hKernel32Dll,"OpenVxDHandle");//此为使用,其目的是想得到一个VxD事件句柄,以便从应用程序传递给VxD中,使VxD与应用程序异步通信。
你个人的水平 中级
回答:
这种变量有的书叫指向函数的指针,有的叫过程变量或函数变量。实际上利用GetProcAddress得到OpenVxDHandle函数的地址,当执行pfOpenVxDHandle(...)时,程序就跳到pfOpenVxDHandle变量所保存的地址去(即OpenVxDHandle函数),也就是执行OpenVxDHandle函数。这是动态调用DLL函数的常用方法。这种函数的定义格式为:
返回值类型 (*函数名)(参数表)
返回值类型和参数表都必须和要调用的函数完全一致。
此问题由李海回答。
| |
|
|
| |
|
|