建立了ON_WM_DEVICECHANGE()消息响应,但USB拔插nEventType总是7好像是要注册设备,该怎么注册设备啊,添加注册设备函数吗?

解决方案 »

  1.   

    BOOL InitListenUSB()
    {
        HDEVNOTIFY hDevNotify = NULL;
        DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
        ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
        NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
        NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
    for(int i=0; i<sizeof(GUID_DEVINTERFACE_LIST)/sizeof(GUID); i++)
    {
    NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];
    hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(), &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
    if( !hDevNotify ) {
    AfxMessageBox(CString("Can't register device notification: ") 
    + _com_error(GetLastError()).ErrorMessage(), MB_ICONEXCLAMATION);
    return FALSE;
    }
    }
    return TRUE;
    }
      

  2.   

    试了一下,出现了一堆未定义的错误,
    上网查了下好像要装PSDK才行,是么??
      

  3.   

    在stdafx.h中开始处加上#define WINVER  0x0500
    在你声明InitListenUSB()的前面定义static const GUID GUID_DEVINTERFACE_LIST[] = { 
    { 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } },
    { 0x53f56307, 0xb6bf, 0x11d0, { 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } },
    { 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } },
    { 0xad498944, 0x762f, 0x11d0, { 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } }};增加头文件
    #include <dbt.h>
    #include <comdef.h>