我在这里:
问题:在XP上,这两个人一起工作得非常好,但是当我开始将它们移植到Vista& Win7系统,麻烦迅速上升。
但是:我只是想听听,是否有可能在Vista&上连接驱动程序和用户应用程序。 Win7与UAC-is-on,如果可能的话,必须有什么条件来执行这种交互(例如,驱动程序必须签名或者其他东西......)?
非常感谢!
答案 0 :(得分:2)
您的驱动程序应该为用户模式应用程序公开虚拟设备以打开并与之交互(通常通过IOCTL)。
这完全独立于您正在使用的文件系统设备层。
当您的驱动程序创建此新虚拟设备时,它可以设置权限以允许任何用户打开它,只允许提升管理员等。
最后请注意,您提到的内容(监视mount,unmount和MoveFile)已内置于Windows中。我不知道为什么在编写驱动程序时可以使用WM_DEVICECHANGE
(对于mount / unmount)和FindFirstChangeNotification
/ ReadDirectoryChangesW
和/或NTFS日志进行MoveFile检测。
答案 1 :(得分:0)
如果您在启动时设置选项,则可以安装未签名的驱动程序(google for it,不记得它是如何完成的)。使用钩子来获取用户操作绝不是一个好主意。使用IPC。 IIRC您可以在调用CreateService时设置Desktop标志(SERVICE_INTERACTIVE_PROCESS),告诉服务它可以与桌面交互。 如果你想获得有关USB mount / umount的通知你为什么不使用系统事件和文件修改FindFirstChangeNotification(http://msdn.microsoft.com/en-us/library/aa364417%28v=VS.85% 29.aspx)?