【发布时间】:2017-04-06 02:38:07
【问题描述】:
我正在做一个项目,以异步方式将 Windows 写入请求从一个硬盘实时复制到另一个硬盘。
我是windows下内核模式驱动开发的新手,我的想法是监控IO请求。
我搜索了很多,但该区域没有按应有的记录。
我进行了搜索,发现了 4 个潜在客户(但没有一个肯定是最好的选择)
- IRP
Windows 驱动程序使用的 IO 请求数据包在它们和操作系统之间进行通信,但是我可以监视硬盘驱动程序使用的 IRP 吗?安全性呢?
- Windows 过滤器驱动程序
系统过滤驱动级别从上到下有很多,应该使用哪一个?是否可以过滤硬盘驱动程序使用的 IO?
- IO 挂钩
Windows 防病毒软件使用此技术来挂钩 IO 并检查文件。在我的情况下使用可靠吗?
- 内核事件跟踪
被 Microsoft Diskmon 工具用来监控硬盘活动。
这里的问题是我不知道从哪里开始,从性能和安全性方面来说,最好的选择是什么。
【问题讨论】:
-
您的安全问题是什么?任何其他内核模式代码都可以为您做任何它喜欢的事情;任何用户模式代码都无法触及您。
-
我的意思是关于其他驱动程序的安全问题,我可以监控硬盘驱动程序使用的 IO 请求吗?
-
称为 RAID1。没有人可以可靠地针对19 dollar solution进行竞争性编程。
-
@HansPassant 是 RAID1,但不同之处在于我需要实现它异步并更好地控制正在复制的数据。另外解决方案是实现硬件 RAID,我需要实现一种软 RAID 解决方案
-
这也是一个谬误。您对数据一无所知。您将不知道数据代表什么,甚至不知道它存储在文件系统中的什么位置。所以你没有控制权。如果您想要一个合适的解决方案,而不是一堆无助于任何人的随机猜测,那么描述您的“控制”意图是必要。
标签: c++ windows winapi io kernel