我做了一个测试程序
用来响应一个特殊的USB外设
应该做的,已经都写在这个DEMO中了,可是结果是RegisterDeviceNotification好像没起作用一样,以下列出该程序中的关键部分,请大家看看,是哪里有错!!

解决方案 »

  1.   

    首先是在MainFrm.h
    中定义了如下的内容:
    private:
    bool DoRegisterDeviceInterface(GUID InterfaceClassGuid,HDEVNOTIFY *hDevNotify);//和MSDN的列子一样的
    GUID ICGuid;//用来保存我的USB外设的CLSID

    HDEVNOTIFY *hNotifyDevNode;//用在上面的函数中来保存
             //RegisterDeviceNotification的结果,大家知道的
      

  2.   

    DoRegisterDeviceInterface的函数体如下:
         DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
        DWORD Err;    ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
        NotificationFilter.dbcc_size = 
            sizeof(DEV_BROADCAST_DEVICEINTERFACE);
        NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
        NotificationFilter.dbcc_classguid = InterfaceClassGuid;
    if (!m_hWnd) MessageBox("不正确","提示",MB_OK);
        *hDevNotify = RegisterDeviceNotification( m_hWnd, 
            &NotificationFilter,
            DEVICE_NOTIFY_WINDOW_HANDLE
        );    if(!*hDevNotify) 
        {
            Err = GetLastError();
            printf( "RegisterDeviceNotification failed: %lx.\n", Err);
            return FALSE;
        }    return TRUE;
      

  3.   

    接着,我首先在CMainFrm的构造函数中初始了这两个成员
          ICGuid.Data1=0x36FC9E60;
    ICGuid.Data2= 0xC465;
    ICGuid.Data3= 0x11CF;
    ICGuid.Data4[0]= 0x80;
    ICGuid.Data4[1]= 0x56;
    ICGuid.Data4[2]= 0x44;
    ICGuid.Data4[3]= 0x45; 
    ICGuid.Data4[4]= 0x53;
    ICGuid.Data4[5]= 0x54;
    ICGuid.Data4[6]= 0x00; 
    ICGuid.Data4[7]= 0x00;
             hNotifyDevNode=new HDEVNOTIFY;
      

  4.   

    谢谢,帮我UP
    然后,我在CMainFrm::OnCreate()
    中调用了这个DoRegisterDeviceInterface(ICGuid,hNotifyDevNode)
    这时候CMainFrm::m_Hwnd应该已经有内容了。
    当然我在CMainFrm的析构函数中有注销刚才的注册
      

  5.   

    再然后,我在CMainFrm的WindowsProc中来检测message
    可是结果和没注册前一样,我真是头大了,也没人好问
    只能求教各位大虾了,大家帮帮我,我很菜的,说不定
    是什么低级的问题!谢谢大家了
      

  6.   

    To  zhou80bin(彬彬) :
       我一开贴
     http://expert.csdn.net/Expert/topic/1367/1367327.xml?temp=.9013636
    一百够的还可以给我有3千多分