如何在用户创建挂载点时收到通知?

时间:2008-10-22 17:20:56

标签: windows winapi

首先,这是约束:

  • 必须在XP上运行
  • 必须通知两个驱动器号分配和将卷安装到文件夹
  • 如果车辆正在睡觉,一定不要“叫醒”。
  • 我真的不想轮询驱动器。

我尝试了什么:

  1. 谷歌
  2. 我查看了WMI和Win32_LogicalDisk类。我可以确定哪些驱动器安装到驱动器号,但不能安装到文件夹。 Win32_Volume *和Win32_MountPoint类是完美的,但在XP上不可用。
  3. 我尝试使用FindFirstVolume& GetVolumePathNamesForVolumeName(即使我不想这样做),但似乎驱动器必须先旋转才能提供信息。再次,ew,polling。
  4. 我正在考虑使用API​​挂钩来挂钩对SetVolumeMountPoint和DeleteVolumeMountPoint的调用的可能性,但我认为这不会捕获所有内容,而且看起来这可能是一个丑陋的黑客攻击。

    所以,是的,我正在寻找建议:)

1 个答案:

答案 0 :(得分:2)

SetVolumeMountPoint上的API挂钩应该允许您拦截卷装入。我不确定网络共享。

但它不会是一个'丑陋的黑客'。你要做的是在Windows中构建挂钩的内容。 Codeproject.com提供了有关API挂钩的精彩教程:http://www.codeproject.com/KB/system/hooksys.aspx

所以你实际上已经说出了自己最好的解决方案。请记住,还有一个单独的驱动器号API:http://nukz.net/reference/fileio/hh/winbase/fsys_6j8z.htm

您的项目听起来很有趣。通常,特洛伊木马和反病毒试图这样做(并且它们也会捕获网络共享。)我只是随便熟悉这个主题,所以我希望这会有所帮助。