FS Development - KMDF Windows Драйвер
Я новичок здесь и пытаюсь разработать концептуальный драйвер fs для tar 'filesystem' (mount tar). Мой вопрос: как ОС определяет, что раздел имеет файловую систему TAR, и автоматически загружает мой драйвер?
1 ответ
В первую очередь загружается ФС с именем IoRegisterFileSystem - эта подпрограмма вставляет объект устройства в список файловых систем в системе. тогда у вас должен быть WRK. когда говорят файл открывается на устройстве с VPB IopCheckVpbMounted
называется и он звонит IopMountVolume
- это ключевой момент для понимания. эта процедура сначала просматривает список с зарегистрированной FS и отправляет IRP_MN_MOUNT_VOLUME всем, пока некоторые FS не вернут код успеха. также последняя запись в списке - специальный распознаватель файловой системы - он пытается определить формат тома. и если да - он вернется STATUS_FS_DRIVER_REQUIRED
- указывает, что нужно загрузить новую ФС для этого тома. Система в этом случае вызова IopLoadFileSystemDriver
, эта процедура вызывается, когда драйвер распознавателя мини-файловой системы распознает том как определенную файловую систему, но драйвер для этой файловой системы еще не загружен. в настоящий момент FS_Rec.sys поддерживает следующую FS:
cdfs
ReFS
ReFSv1 // begin from win 10
ExFat
FastFat
Udfs
Ntfs
для поддержки других - вам нужно или автоматически загрузить собственный драйвер FS или самопознаватель (мини-драйвер), которые распознают ваш FS и возвращают STATUS_FS_DRIVER_REQUIRED
на IRP_MJ_FILE_SYSTEM_CONTROL.IRP_MN_MOUNT_VOLUME
и загрузите свою ФС (вызовом ZwLoadDriver) на IRP_MJ_FILE_SYSTEM_CONTROL.IRP_MN_LOAD_FILE_SYSTEM