typedef  PVOID           HDEVNOTIFY;
typedef  HDEVNOTIFY     *PHDEVNOTIFY;
//第一行,可以理解,把HDEVNOTIFY定义成PVOID的数据类型
但第二行,怎样理解
如果放在下面的函数中
BOOL DoRegisterDeviceInterface( 
    GUID InterfaceClassGuid, 
    HDEVNOTIFY *hDevNotify 
)
不用HDEVNOTIFY,而用PVOID的话应该是什么?
是这样吗?
BOOL DoRegisterDeviceInterface( 
    GUID InterfaceClassGuid, 
    PVOID  *hDevNotify 
)

解决方案 »

  1.   

    PVOID hNotifyDevNode;
    //上面不是已经把 hNotifyDevNode定义成指针了吗
    //那下面再PVOID *hNotifyDevNode,这又怎样理解?
     
    void RegisterForDevChange(HWND hDlg, PVOID *hNotifyDevNode)
    //
      

  2.   

    typedef  HDEVNOTIFY     *PHDEVNOTIFY;
    表示
    PHDEVNOTIFY x; //等价 HDEVNOTIFY   *x;又
    typedef  PVOID           HDEVNOTIFY;
    所以,等价 PVOID *x;又
    typedef void *PVOID;
    所以,等价 void ** x;
      

  3.   

    BOOL DoRegisterDeviceInterface( 
        GUID InterfaceClassGuid, 
        HDEVNOTIFY *hDevNotify 
    );
    您在使用的时候可以
    GUID guid;
    HDEVNOTIFY hdev;
    BOOL bRet=DoRegisterDeviceInterface(guid,&hdev);
      

  4.   

    那也么
    PVOID hNotifyDevNode;
    中的hNotifyDevNode,并不是一个指针,而是一个无类型的变量??
      

  5.   


    PHDEVNOTIFY hDevNotify ;
    等价 HDEVNOTIFY *hDevNotify ;
    等价 PVOID *hDevNotify;
    等价 void **hDevNotify;所以 hDevNotify是一个指向指针的指针.
      

  6.   

    PVOID x;
    等价 void* x;
    是一个指针。