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类型的例程的地址存储在FLT_REGISTRATION结构的 NormalizeNameComponentCallback 成员中,微筛选器驱动程序将该成员作为参数传递给 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