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

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

Синтаксис

PFLT_NORMALIZE_NAME_COMPONENT PfltNormalizeNameComponent;

NTSTATUS PfltNormalizeNameComponent(
  [in]      PFLT_INSTANCE Instance,
  [in]      PCUNICODE_STRING ParentDirectory,
  [in]      USHORT VolumeNameLength,
  [in]      PCUNICODE_STRING Component,
  [out]     PFILE_NAMES_INFORMATION ExpandComponentName,
  [in]      ULONG ExpandComponentNameLength,
  [in]      FLT_NORMALIZE_NAME_FLAGS Flags,
  [in, out] PVOID *NormalizationContext
)
{...}

Параметры

[in] Instance

Указатель непрозрачного экземпляра для экземпляра драйвера минифильтра, для который зарегистрирована эта подпрограмма обратного вызова.

[in] ParentDirectory

Указатель на структуру UNICODE_STRING , содержащую имя родительского каталога для этого компонента имени.

[in] VolumeNameLength

Длина (в байтах) имени родительского каталога, хранящегося в структуре, на которую указывает параметр ParentDirectory .

[in] Component

Указатель на UNICODE_STRING структуру, содержащую развертываемый компонент имени.

[out] ExpandComponentName

Указатель на структуру FILE_NAMES_INFORMATION , которая получает развернутые (нормализованные) сведения об имени файла для компонента имени.

[in] ExpandComponentNameLength

Длина (в байтах) буфера, на который указывает параметр ExpandComponentName .

[in] Flags

Флаги нормализации имен. FLTFL_NORMALIZE_NAME_CASE_SENSITIVE указывает, что имя для нормализации учитывает регистр. FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME указывает, что подпрограмма обратного вызова была вызвана для обслуживания вызова подпрограммы FltGetDestinationFileNameInformation .

[in, out] NormalizationContext

Указатель на предоставленные драйвером минифильтра сведения о контексте, передаваемые в последующих вызовах этой подпрограммы обратного вызова, которые выполняются для нормализации оставшихся компонентов в том же пути к файлу.

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

Эта подпрограмма обратного вызова возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS. Если компонент имени, указанный в параметре Component , не существует в родительском каталоге, который указывает параметр ParentDirectory , эта подпрограмма обратного вызова должна возвращать STATUS_NO_SUCH_FILE. Если эта подпрограмма обратного вызова отправляет запрос IRP_MN_QUERY_DIRECTORY (FileNamesInformation) к родительскому каталогу, файловая система возвращает правильный код состояния. В этом случае обратный вызов может просто возвращать код состояния, возвращаемый файловой системой.

Комментарии

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

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

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

Если драйвер минифильтра использует параметр NormalizationContext , он также должен зарегистрировать подпрограмму обратного вызова очистки контекста нормализации. Дополнительные сведения см. в справочной записи по PFLT_NORMALIZE_CONTEXT_CLEANUP.

Требования

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

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

FILE_NAMES_INFORMATION

FLT_REGISTRATION

FltRegisterFilter

PFLT_GENERATE_FILE_NAME

PFLT_NORMALIZE_CONTEXT_CLEANUP

PFLT_NORMALIZE_NAME_COMPONENT_EX

UNICODE_STRING