2016-11-22 5 views
3

Я работаю над проектом для репликации запросов на запись Windows с одного жесткого диска на другой в асинхронном режиме в реальном времени.windows hard drive Репликация в реальном времени

Я новичок в разработке драйверов режима ядра под окнами, что я имею в виду для мониторинга запросов ввода-вывода.

Я много искал, но эта область не документирована так, как должна.

Я сделал свой поиск и нашел 4 провода (но не из них, несомненно, лучший вариант, чтобы начать с)

  • IRP

пакеты запросов ввода-вывода, используемые водителями окон для связи между ними и ОС, но смогу ли я контролировать IRP, используемый драйвером жесткого диска? и как насчет безопасности?

  • драйвера фильтров для Windows

есть много уровней системного фильтра драйверов от верхнего до нижнего, какой из них следует использовать? и смогу ли я фильтровать IO, используемые драйвером жесткого диска?

  • IO перехватывает

этот метод используется окна антивирусов для подключения КСН и проверить файлы. Является ли он надежным в моей ситуации?

  • ядро ​​трассировки событий

Используется по Microsoft Diskmon инструмент для мониторинга активности жесткого диска.

Проблема заключается в том, что я не знаю, с чего начать, и с чего лучше всего начать с точки зрения производительности и безопасности.

+1

Каковы ваши проблемы безопасности? Любой другой код режима ядра сможет делать все, что вам нравится; ни один код режима пользователя не сможет коснуться вас. –

+0

Я имею в виду проблемы безопасности, связанные с другими драйверами, смогу ли я отслеживать запросы ввода-вывода, используемые драйвером жесткого диска? –

+1

Вызывается RAID1. Никто не может * надежно * и конкурировать с программой [19-долларовым решением] (http://www.newegg.com/Product/Product.aspx?Item=N82E16815124152). –

ответ

1

вы сначала должны понять, совершенствовать windows Storage, Volumes, and File System Stacks и использовать Device Tree

детерминированным, какое устройство вам нужно фильтровать и, как UpperFilter или Lowfilter. вам действительно нужен реплицировать диск или сказать, что раздел (том) на диске или файловых системах читает/записывает?

для подключения к устройству вы можете зарегистрировать себя в реестре, например, для дискового фильтра - под HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318} в UpperFilters или LowerFilters

чтения пример стека this хранения ваше место в (4) (LowFilter - вы будете фильтр IRP_MJ_SCSI для чтения/записи) или (7) (UpperFilter - вы будете фильтр IRP_MJ_READ/IRP_MJ_WRITE для чтения/записи) драйвер должен быть или прямой WDM (регистр AddDevice в драйвере) или использовать KMDF (рамочный оболочка)

другое решение использовать IoRegisterPlugPlayNotification (EventCategoryDeviceInterfaceChange, & GUID_DEVINTERFACE_DISK) для прикрепить диск FDO - здесь вы всегда будете UpperFilter

и лучший ресурс для задать такой вопрос, совет - это osronline - NTFSD или NTDEV форум

+0

Благодарим вас за рекомендации, которые они очень полезны, по вашему вопросу, мне нужно реплицировать весь диск на уровне блока –

+0

@AhmedKato - так вам нужно - https://msdn.microsoft.com/en-us/windows/ аппаратные/драйверы/драйверы хранения/хранения-фильтра. и детерминированный низкий или высокий фильтр - «SFD нижнего уровня контролирует SRB и/или IRP, выданные драйвером класса хранения», драйвер фильтра уровня более высокого уровня (SFD) перехватывает IRP из пользовательских приложений – RbMm

Смежные вопросы