我基本上理解你是C ++的人,请不要因为我用Delphi写作而分心。
我有一个稳定的USB列表方法,可以访问我的所有USB设备
我得到devicepath
和这个结构:
TSPDevInfoData = packed record
Size: DWORD;
ClassGuid: TGUID;
DevInst: DWORD; // DEVINST handle
Reserved: DWord;
end;
我从ProductID
成功获得VenderID
和DevicePath
列出当时连接到计算机的所有USB设备
这使我能够以稳定的方式访问每个设备的注册表数据。
我缺少的是一个小方向
固件编程器能否在连接的USB Micro芯片内写入友好名称? (我正在考虑更进一步识别设备,或者这是为了帮助识别大容量数据传输设备,如记忆棒和相机)
我可以使用SPDRP_REMOVAL_POLICY_OVERRIDE来重置这些政策 我还可以对注册表详细信息做些什么。
识别某人拔出设备时程序正在使用(在Windows XP标准中) 我使用了一个没有响应的记录的Windows事件。 我是否可以读取注册表值以确定其是否仍然连接?
使用CreateFileA(DevicePath)发送和接收数据 我读过一些人在数据传输过程中拔出其难以清理的资源。
IoCreateDevice可以为我做什么以及如何将其用于该任务
这种双向连接状态和系统锁定情况非常令人担忧。 最近有人读过这个主题吗?
我的目标是 列出连接的USB设备
从其他所有内容中识别开发微控制器
以稳定,快速的方式发送和接收数据到控制器的限制
没有锁定传输数据
注意我没有使用任何服务包
我理解当windows xp不是时,所有USB都是ANSI,而.Net都是关于ANSI的 (多么浪费记忆)
我计划在以后将这个项目继续用作.net作为补充。
MSDN为我提供了结构和功能,以及什么应该链接到什么,但对它们的用途很少说。
我的语言可用的东西德尔福的定价超过它需要大幅降价。
答案 0 :(得分:0)
我找到了注册表DEVICE_INSTALL_STATE: -
InstallStateInstalled = 0, InstallStateNeedsReinstall = 1, InstallStateFailedInstall = 2, InstallStateFinishInstall = 3
我问的问题是更新后的响应有多快,以及它们是否是更好的方法
Lex Dean