请问哪位大虾知道在Windows中有什么函数可以侦测到我插入电脑的USB设备,并且可以得到USB设备的盘符?最好可以有一些简单的例子。谢谢!!!!

解决方案 »

  1.   

    use UINT GetDriveType(LPCTSTR lpRootPathName   // root directory);
    //example:
    LRESULT CALLBACK WINAPI WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    if(uMsg == WM_DESTROY)//窗口撤销消息,在程序退出时会收到此消息
    {
    cleanup(hwnd);
    WSACleanup();
    PostQuitMessage(0);
    return 0;
    } if(uMsg == WM_DEVICECHANGE)//硬件变动消息,在计算机硬件变动时程序会收到此消息
    {
    handle_WM_DEVICECHANGE(hwnd,uMsg,wParam,lParam);
    } //在处理完消息之后,使用Windows消息的默认处理过程
    return DefWindowProc(hwnd,uMsg,wParam,lParam);}void handle_WM_DEVICECHANGE(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;

    switch (wParam)
    {
    case DBT_DEVICEARRIVAL:
    if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
    {
    PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME) lpdb;
    if ( (lpdbv -> dbcv_flags & DBTF_MEDIA) || (lpdbv -> dbcv_flags & DBTF_NET) )
    {
    ; //we do not care about this,do nothing
    }else{
    char i;
    ULONG unitmask = lpdbv ->dbcv_unitmask;
    for (i = 0; i < 26; ++i)
    {
    if (unitmask & 0x1)
    {
    char disknum = i+'A';//这就是插入的设备盘符 }
    unitmask = unitmask >> 1;
    }
    }
    }
    break; case DBT_DEVICEREMOVECOMPLETE:
    if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
    {
    PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
    if ( (lpdbv -> dbcv_flags & DBTF_MEDIA) || (lpdbv -> dbcv_flags & DBTF_NET) )
    {
    ;//we do not care about this,do nothing
    }else{
    char i;
    ULONG unitmask = lpdbv ->dbcv_unitmask;
    for (i = 0; i < 26; ++i)
    {
    if (unitmask & 0x1)//发送消息到服务器端
    {
    char disknum = i+'A';//这是移去的设备盘符 }
    unitmask = unitmask >> 1;
    }
    }
    }
    break; default:
    break;

    }
    }
      

  2.   

    参考:
    http://www.vckbase.net/document/viewdoc/?id=1282
    http://www.vckbase.net/document/viewdoc/?id=906
    http://www.vckbase.net/document/viewdoc/?id=900
      

  3.   

    这样的话是对所有的USB设备都有效吧!可是我只想知道我自己的设备被插上去了,并且还要进行数据交互
      

  4.   

    得到USB插上去后,就监测一下是不是你的设备好了,在你的USB你放一些特征码。
      

  5.   

    还有一个问题,这段代码只能够在运行的时候才能检测到USB设备。如果我的USB设备已经查入电脑里了,就没有办法得到那些插入消息了
      

  6.   

    http://community.csdn.net/Expert/topic/3515/3515719.xml?temp=.7106287