USB设备侦测问题

guoxiny 2004-11-18 11:14:55

请问哪位大虾知道在Windows中有什么函数可以侦测到我插入电脑的USB设备,并且可以得到USB设备的盘符?

最好可以有一些简单的例子。

谢谢!!!!
...全文
309 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoxiny 2004-12-23
  • 打赏
  • 举报
回复
先多谢大家的帮助哦!

给分啦。
bjskyhorse 2004-11-22
  • 打赏
  • 举报
回复
你去找一下,以前有很多这样的文章探讨U盘和移动硬盘的问题。包括是否正确的显示其容量。
kingzai 2004-11-22
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3515/3515719.xml?temp=.7106287
guoxiny 2004-11-22
  • 打赏
  • 举报
回复
还有一个问题,这段代码只能够在运行的时候才能检测到USB设备。如果我的USB设备已经查入电脑里了,就没有办法得到那些插入消息了
wangk 2004-11-19
  • 打赏
  • 举报
回复
得到USB插上去后,就监测一下是不是你的设备好了,在你的USB你放一些特征码。
guoxiny 2004-11-19
  • 打赏
  • 举报
回复
这样的话是对所有的USB设备都有效吧!可是我只想知道我自己的设备被插上去了,并且还要进行数据交互
roger_ding 2004-11-18
  • 打赏
  • 举报
回复
这段东东对U盘也适用的!
老夏Max 2004-11-18
  • 打赏
  • 举报
回复
呵呵,好像这个东东只对光盘起作用吧,我以前也遇到过!
qrlvls 2004-11-18
  • 打赏
  • 举报
回复
弓虽
flyelf 2004-11-18
  • 打赏
  • 举报
回复
mark
kingzai 2004-11-18
  • 打赏
  • 举报
回复
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;

}
}

老夏Max 2004-11-18
  • 打赏
  • 举报
回复
参考:
http://www.vckbase.net/document/viewdoc/?id=1282
http://www.vckbase.net/document/viewdoc/?id=906
http://www.vckbase.net/document/viewdoc/?id=900

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧