Managing File Names

The filter manager eliminates much of the work required for legacy filter drivers to retrieve and manage file names. When a name is requested, the filter manager provides the name in a reference-counted structure in the appropriate format for the current operation: normalized name, opened name, or short name.

A minifilter driver can call FltGetDestinationFileNameInformation to construct a full destination path name for a file or directory that is being renamed or for which an NTFS hard link is being created. This name can be returned in either normalized or opened-file format.

The filter manager also provides the FltGetTunneledName routine for retrieving normalized file name information that is invalidated due to file name tunneling.

To improve performance, the filter manager places names in a cache (where possible) that is shared among all minifilter drivers in the system. A minifilter driver can query either the cache or the file system, or both.

Minifilter drivers that modify the namespace can take advantage of the filter manager's support for name providers by registering callback routines to intercept name query operations, such as requests by upper minifilter drivers to generate or normalize a name.

Filter Manager Routines for Name Management

The filter manager provides the following support routines for name management:

FltGetDestinationFileNameInformation

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetTunneledName

FltParseFileNameInformation

FltReleaseFileNameInformation

Minifilter Driver Callback Routines for Name Management

The following callback routines are stored in the FLT_REGISTRATION structure that is passed as a parameter to FltRegisterFilter, for minifilter drivers that modify the namespace:

Callback Routine Name Callback Routine Type

GenerateFileNameCallback

PFLT_GENERATE_FILE_NAME

NormalizeContextCleanupCallback

PFLT_NORMALIZE_CONTEXT_CLEANUP

NormalizeNameComponentCallback

PFLT_NORMALIZE_NAME_COMPONENT