функция обратного вызова 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 |
См. также раздел
PFLT_NORMALIZE_CONTEXT_CLEANUP