Функция FltAttachVolume (fltkernel.h)

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, например одно из следующих:

Возвращаемый код Описание
STATUS_FLT_DELETING_OBJECT
Указанный фильтр или тома отключается. Это код ошибки.
STATUS_FLT_FILTER_NOT_READY
Драйвер минифильтра не начал фильтрацию. Дополнительные сведения см. в FltStartFiltering. Это код ошибки.
STATUS_FLT_INSTANCE_NAME_COLLISION
Экземпляр уже существует с таким именем в указанном томе.
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume возникла ошибка выделения пула. Это код ошибки.
STATUS_OBJECT_NAME_COLLISION
Другой экземпляр уже был присоединен на высоте, указанной в атрибутах экземпляра, которые были считаны из реестра. Это код ошибки.

Замечания

Если вызывающий объект задает значение, отличное от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

См. также

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING