微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检测正在插入的USB驱动器 – Windows服务

我试图检测一个正在Windows服务中插入的USB磁盘驱动器,我已经做了这个正常的Windows应用程序。 问题是以下代码不适用于卷。

注册设备通知

DEV_broADCAST_DEVICEINTERFACE notificationFilter; HDEVNOTIFY hDeviceNotify = NULL; ::ZeroMemory(&notificationFilter,sizeof(notificationFilter)); notificationFilter.dbcc_size = sizeof(DEV_broADCAST_DEVICEINTERFACE); notificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; notificationFilter.dbcc_classguid = ::GUID_DEVINTERFACE_VOLUME; hDeviceNotify = ::RegisterDeviceNotification(g_serviceStatusHandle,&notificationFilter,DEVICE_NOTIFY_SERVICE_HANDLE);

ServiceControlHandlerEx函数中的代码

case SERVICE_CONTROL_DEVICEEVENT: PDEV_broADCAST_HDR pbroadcastHdr = (PDEV_broADCAST_HDR)lpEventData; switch (dwEventType) { case DBT_DEVICEARRIVAL: ::MessageBox(NULL,"A Device has been plugged in.","Pounce",MB_OK | MB_ICON@R_615_4045@ION); switch (pbroadcastHdr->dbch_devicetype) { case DBT_DEVTYP_DEVICEINTERFACE: PDEV_broADCAST_DEVICEINTERFACE pDevInt = (PDEV_broADCAST_DEVICEINTERFACE)pbroadcastHdr; if (::IsEqualGUID(pDevInt->dbcc_classguid,GUID_DEVINTERFACE_VOLUME)) { PDEV_broADCAST_VOLUME pVol = (PDEV_broADCAST_VOLUME)pDevInt; char szMsg[80]; char cDriveLetter = ::GetDriveLetter(pVol->dbcv_unitmask); ::wsprintfA(szMsg,"USB disk drive with the drive letter '%c:' has been inserted.",cDriveLetter); ::MessageBoxA(NULL,szMsg,MB_OK | MB_ICON@R_615_4045@ION); } } return NO_ERROR; }

在Windows应用程序中,我能够获取dbch_devicetype中的DBT_DEVTYP_VOLUME,但是这在Windows服务实现中不存在。 有没有人看到或听说过这个问题的解决scheme,没有明显的重写为Windows应用程序?

Gtk-ERROR **:检测到GTK + 2.x符号

在多个节点上发生MPI_Bcast错误

在GTK Treeview Mono中打印所有行

为什么我的结构元素带有填充字节?

分窗口显示一个软件,总是在最上面

我怎样才能在Ubuntu 11.04下编译libsndfile?

Qt QextSerialPort静态库

如何检测大写locking是否已经激活?

浮点常量比较 – (0.0?1:0)

WinForms手柄太多

Windows 7支持“触发启动服务”。 如果你想开始你的服务,在一个休眠循环周围,并作出反应,只要有东西插入,我认为你会更好(假设Windows 7是一个选项)与触发器启动服务的操作系统启动服务当USB设备插入(还有其他的触发器,但你提到了这一个。)

示例应用程序XP2Win7( http://code.msdn.microsoft.com/XP2Win7 )包含此功能。 它带有完整的源代码。 大多数是在VB和C#中,但触发器开始的服务部分是(本机)C ++。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐