функция обратного вызова PFLT_INSTANCE_SETUP_CALLBACK (fltkernel.h)

Драйвер минифильтра может зарегистрировать подпрограмму типа PFLT_INSTANCE_SETUP_CALLBACK в качестве подпрограммы InstanceSetupCallback драйвера минифильтра.

Синтаксис

PFLT_INSTANCE_SETUP_CALLBACK PfltInstanceSetupCallback;

NTSTATUS PfltInstanceSetupCallback(
  [in] PCFLT_RELATED_OBJECTS FltObjects,
  [in] FLT_INSTANCE_SETUP_FLAGS Flags,
  [in] DEVICE_TYPE VolumeDeviceType,
  [in] FLT_FILESYSTEM_TYPE VolumeFilesystemType
)
{...}

Параметры

[in] FltObjects

Указатель на структуру FLT_RELATED_OBJECTS , содержащую непрозрачные указатели для объектов, связанных с текущей операцией.

[in] Flags

Битовая маска флагов, указывающих, почему присоединен экземпляр. Может быть одним или несколькими из следующих вариантов:

Flag Значение
FLTFL_INSTANCE_SETUP_AUTOMATIC_ATTACHMENT (0x00000001) Экземпляр присоединяется автоматически. Либо драйвер минифильтра был только что загружен и подключен ко всем существующим томам, либо он присоединяется к вновь подключенному тому.
FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT (0x00000002) Экземпляр присоединяется вручную, так как приложение пользовательского режима вызывает FilterAttach или FilterAttachAtAltitude или компонент режима ядра называется FltAttachVolume или FltAttachVolumeAtAltitude.
FLTFL_INSTANCE_SETUP_NEWLY_MOUNTED_VOLUME (0x00000004) Экземпляр автоматически присоединяется к вновь подключенному тому.
FLTFL_INSTANCE_SETUP_DETACHED_VOLUME (0x00000008) Экземпляр присоединяется к отсоединенному тому. В некоторых файловых системах (например, FAT и CDFS, которые используются некоторыми съемными носителями) можно повторно подключить том после его отсоединения. Том отсоединяется, если у него нет связанного стека хранилища. Том в этом состоянии обычно является отключенным томом, который по-прежнему содержит открытые файлы.
FLTFL_INSTANCE_SETUP_DEV_VOLUME (0x00000010) Экземпляр присоединяется к тому, который отформатирован как том разработчика. Фильтры файловой системы могут включать оптимизации, для которых не требуется, чтобы администратор доверял тому на данном компьютере. Доступно начиная с Windows 11 версии 22H2 с обновлением за сентябрь.
FLTFL_INSTANCE_SETUP_TRUSTED_VOLUME (0x00000020) Указывает, что администратор на данном компьютере доверяет этому тому и хочет включить оптимизацию, например, не подключать к нему антивирусные фильтры. Эти сведения сохраняются в реестре на заданном компьютере. Это можно использовать фильтрами файловой системы, чтобы обеспечить оптимизацию, требующую доверия администратора к тому на данном компьютере. Доступно начиная с Windows 11 версии 22H2 с обновлением за сентябрь.

[in] VolumeDeviceType

Тип устройства тома файловой системы. Должна быть одной из следующих:

  • FILE_DEVICE_CD_ROM_FILE_SYSTEM (0x00000002)
  • FILE_DEVICE_DISK_FILE_SYSTEM (0x00000008)
  • FILE_DEVICE_NETWORK_FILE_SYSTEM (0x00000014)

[in] VolumeFilesystemType

Тип файловой системы тома. Возможные значения перечислены в FLT_FILESYSTEM_TYPE.

Возвращаемое значение

Эта подпрограмма обратного вызова возвращает STATUS_SUCCESS или значение NTSTATUS, например следующее:

Код возврата Описание
STATUS_FLT_DO_NOT_ATTACH Возврат этого значения предотвращает присоединение экземпляра драйвера минифильтра к заданному тому. Это код ошибки.

Комментарии

Примечание

Не выполняйте синхронизацию потоков или взаимодействие между процессами в реализации PFLT_INSTANCE_SETUP_CALLBACK . Выполнение таких операций может привести к взаимоблокировки.

Когда драйвер минифильтра регистрирует себя путем вызова FltRegisterFilter из своей подпрограммы DriverEntry , он может зарегистрировать подпрограмму типа PFLT_INSTANCE_SETUP_CALLBACK в качестве подпрограммы InstanceSetupCallback драйвера минифильтра.

Чтобы зарегистрировать подпрограмму InstanceSetupCallback , драйвер минифильтра сохраняет адрес подпрограммы типа PFLT_INSTANCE_SETUP_CALLBACK в элементе InstanceSetupCallback структуры FLT_REGISTRATION , которую драйвер минифильтра передает в качестве параметра Registrationпараметра FltRegisterFilter.

Диспетчер фильтров вызывает эту подпрограмму при первой операции после подключения нового тома.

Диспетчер фильтров вызывает эту подпрограмму, чтобы позволить драйверу минифильтра отвечать на автоматический или ручной запрос на вложение. Если эта подпрограмма возвращает код NTSTATUS об ошибке или предупреждение, экземпляр драйвера минифильтра не подключен к заданному тому. В противном случае экземпляр драйвера минифильтра присоединяется к заданному тому.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть fltkernel.h (включая Fltkernel.h)
IRQL PASSIVE_LEVEL

См. также раздел

FLT_REGISTRATION

FLT_RELATED_OBJECTS

FilterAttach

FilterAttachAtAltitude

FltAttachVolume

FltAttachVolumeAtAltitude

FltRegisterFilter

PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK

PFLT_INSTANCE_TEARDOWN_CALLBACK

Диск разработки