热情软件屋

 

奇怪的变量: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函数的常用方法。这种函数的定义格式为:
    返回值类型 (*函数名)(参数表)
    返回值类型和参数表都必须和要调用的函数完全一致。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio