Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
FltAttachVolume создает новый экземпляр драйвера мини-фильтра и присоединяет его к заданному тому.
Синтаксис
NTSTATUS FLTAPI FltAttachVolume(
[in, out] PFLT_FILTER Filter,
[in, out] PFLT_VOLUME Volume,
[in, optional] PCUNICODE_STRING InstanceName,
[out] PFLT_INSTANCE *RetInstance
);
Параметры
[in, out] Filter
Непрозрачный указатель фильтра для вызывающего объекта. Этот параметр является обязательным и не может быть null.
[in, out] Volume
Непрозрачный указатель тома для тома, к которому должен быть подключен экземпляр драйвера мини-фильтра. Этот параметр является обязательным и не может быть null.
[in, optional] InstanceName
Указатель на структуру UNICODE_STRING, содержащую имя экземпляра для нового экземпляра. Этот параметр является необязательным и может быть null. Если значение NULL, FltAttachVolume пытается считывать имя экземпляра по умолчанию драйвера минифильтра из реестра. (Дополнительные сведения об этом параметре см. в следующем разделе "Примечания".)
[out] RetInstance
Указатель на переменную, выделенную вызывающим объектом, которая получает указатель непрозрачного экземпляра для вновь созданного экземпляра. Этот параметр является необязательным и может быть null.
Возвращаемое значение
FltAttachVolume возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих:
| Возвращаемый код | Описание |
|---|---|
|
Указанный фильтр или тома отключается. Это код ошибки. |
|
Драйвер минифильтра не начал фильтрацию. Дополнительные сведения см. в FltStartFiltering. Это код ошибки. |
|
Экземпляр уже существует с таким именем в указанном томе. |
|
FltAttachVolume возникла ошибка выделения пула. Это код ошибки. |
|
Другой экземпляр уже был присоединен на высоте, указанной в атрибутах экземпляра, которые были считаны из реестра. Это код ошибки. |
Замечания
Если вызывающий объект задает значение, отличное отNULL, для InstanceName, FltAttachVolume считывает атрибуты экземпляра, указанные драйвером мини-фильтра, хранящимся в реестре в разделе HKLM\CurrentControlSet\Services\ServiceName\Instances\Instances\InstanceName, где ServiceName — это имя службы драйвера мини-фильтра. Это имя службы указывается в директиве AddService в разделе DefaultInstall.Services INF-файла драйвера минифильтра. (Дополнительные сведения о INF-файлах драйвера фильтра см. в установке драйвера фильтрации файловой системы.)
Если вызывающий объект не задает значение для InstanceName, FltAttachVolume использует имя, хранящееся в реестре в разделе HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance для экземпляра части пути реестра.
Имя экземпляра, указанное в параметре имени экземпляра, должно быть уникальным в системе.
FltAttachVolume возвращает непрозрачный указатель экземпляра для нового экземпляра в *RetInstance. Это значение указателя однозначно идентифицирует экземпляр драйвера мини-фильтра и остается константой до тех пор, пока экземпляр подключен к тому.
FltAttachVolume добавляет ссылку rundown на указатель непрозрачного экземпляра, возвращенный в *RetInstance. Если этот указатель больше не нужен, вызывающий объект должен освободить его, вызвав FltObjectDereference. Таким образом, каждый успешный вызов FltAttachVolume должен соответствовать последующему вызову FltObjectDereference.
Чтобы подключить экземпляр драйвера минифильтра к тому на заданной высоте, вызовите FltAttachVolumeAtAltitude.
Чтобы сравнить высоты двух экземпляров драйвера минифильтра, подключенных к одному тому, вызовите FltCompareInstanceAltitudes.
Чтобы отключить экземпляр драйвера мини-фильтра от тома, вызовите FltDetachVolume.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Всеобщий |
| заголовка | fltkernel.h (include Fltkernel.h) |
| библиотеки | FltMgr.lib |
| IRQL | PASSIVE_LEVEL |