Skip to content

Latest commit

 

History

History
156 lines (83 loc) · 8.41 KB

nc-fltkernel-pflt_normalize_name_component_ex.md

File metadata and controls

156 lines (83 loc) · 8.41 KB
UID title description old-location tech.root ms.date keywords ms.keywords req.header req.include-header req.target-type req.target-min-winverclnt req.target-min-winversvr req.kmdf-ver req.umdf-ver req.ddi-compliance req.unicode-ansi req.idl req.max-support req.namespace req.assembly req.type-library req.lib req.dll req.irql targetos req.typenames f1_keywords topic_type api_type api_location api_name
NC:fltkernel.PFLT_NORMALIZE_NAME_COMPONENT_EX
PFLT_NORMALIZE_NAME_COMPONENT_EX (fltkernel.h)
A minifilter driver that provides file names for the filter manager's name cache can register a routine of type PFLT_NORMALIZE_NAME_COMPONENT_EX as the minifilter driver's NormalizeNameComponentExCallback callback routine.
ifsk\pflt_normalize_name_component_ex.htm
ifsk
04/16/2018
PFLT_NORMALIZE_NAME_COMPONENT_EX callback function
FltCallbacks_d5ac42d8-4a17-49c0-b46f-f0c055ded4f3.xml, NormalizeNameComponentExCallback, NormalizeNameComponentExCallback routine [Installable File System Drivers], PFLT_NORMALIZE_NAME_COMPONENT_EX, fltkernel/NormalizeNameComponentExCallback, ifsk.pflt_normalize_name_component_ex
fltkernel.h
Fltkernel.h
Desktop
PASSIVE_LEVEL
Windows
PFLT_NORMALIZE_NAME_COMPONENT_EX
fltkernel/PFLT_NORMALIZE_NAME_COMPONENT_EX
APIRef
kbSyntax
UserDefined
fltkernel.h
PFLT_NORMALIZE_NAME_COMPONENT_EX

PFLT_NORMALIZE_NAME_COMPONENT_EX callback function

-description

A minifilter driver that provides file names for the filter manager's name cache can register a routine of type PFLT_NORMALIZE_NAME_COMPONENT_EX as the minifilter driver's NormalizeNameComponentExCallback callback routine.

-parameters

-param Instance [in]

Opaque instance pointer for the minifilter driver instance that this callback routine is registered for.

-param FileObject [in]

Pointer to the file object for the file whose name is being requested or the file that is the target of the IRP_MJ_SET_INFORMATION operation if the FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME flag is set. See the Flags parameter below for more information.

-param ParentDirectory [in]

Pointer to a UNICODE_STRING structure that contains the name of the parent directory for this name component.

-param VolumeNameLength [in]

Length, in bytes, of the parent directory name that is stored in the structure that the ParentDirectory parameter points to.

-param Component [in]

Pointer to a UNICODE_STRING structure that contains the name component to be expanded.

-param ExpandComponentName [out]

Pointer to a FILE_NAMES_INFORMATION structure that receives the expanded (normalized) file name information for the name component.

-param ExpandComponentNameLength [in]

Length, in bytes, of the buffer that the ExpandComponentName parameter points to.

-param Flags [in]

Name normalization flags. FLTFL_NORMALIZE_NAME_CASE_SENSITIVE specifies that the name to be normalized is case-sensitive. FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME specifies that the callback routine has been called to service an FltGetDestinationFileNameInformation routine call. If the FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME flag is set, FileObject represents the file/directory that is the target of the IRP_MJ_SET_INFORMATION operation. If the FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME flag is not set, FileObject represents the file/directory whose name is being requested.

-param NormalizationContext [in, out]

Pointer to minifilter driver-provided context information to be passed in any subsequent calls to this callback routine that are made to normalize the remaining components in the same file name path.

-returns

This callback routine returns STATUS_SUCCESS or an appropriate NTSTATUS value. If the name component that the Component parameter specifies does not exist in the parent directory that the ParentDirectory parameter specifies, this callback routine should return STATUS_NO_SUCH_FILE. If this callback routine issues an IRP_MN_QUERY_DIRECTORY (FileNamesInformation) request to the parent directory, the file system returns the correct status code. In this situation, this callback can simply return the status code that the file system returns.

-remarks

A minifilter driver that provides file names for the filter manager's name cache can register a routine of type PFLT_NORMALIZE_NAME_COMPONENT_EX as the minifilter driver's NormalizeNameComponentExCallback callback routine.

The principal difference between the NormalizeNameComponentExCallback callback routine and the NormalizeNameComponentCallback callback routine (of type PFLT_NORMALIZE_NAME_COMPONENT) is that the NormalizeNameComponentExCallback callback routine supports the additional FileObject parameter. The file object (FileObject) can be used by the minifilter driver to retrieve the TXN_PARAMETER_BLOCK structure for the operation that the file/directory is participating in by calling the IoGetTransactionParameterBlock routine. The TXN_PARAMETER_BLOCK structure can be used by the minifilter driver to issue its own create requests in the context of the transaction that this file object is participating in.

To register this callback routine, the minifilter driver stores the address of a routine of type PFLT_NORMALIZE_NAME_COMPONENT_EX in the NormalizeNameComponentExCallback member of the FLT_REGISTRATION structure that the minifilter driver passes as a parameter to FltRegisterFilter.

The filter manager calls this callback routine to query the minifilter driver for the normalized names for components in the file name path whose names the minifilter driver has modified. If the file name path contains more than one such component, the filter manager can call this callback routine multiple times in the process of normalizing all the components in the path. The minifilter driver can use the NormalizationContext parameter to pass context information to subsequent calls to this callback routine.

If the minifilter driver uses the NormalizationContext parameter, it should also register a normalization context cleanup callback routine. For more information, see the reference entry for PFLT_NORMALIZE_CONTEXT_CLEANUP.

-see-also

FILE_NAMES_INFORMATION

FLT_REGISTRATION

FltGetDestinationFileNameInformation

FltRegisterFilter

IRP_MJ_SET_INFORMATION

IoGetTransactionParameterBlock

PFLT_GENERATE_FILE_NAME

PFLT_NORMALIZE_CONTEXT_CLEANUP

PFLT_NORMALIZE_NAME_COMPONENT

TXN_PARAMETER_BLOCK

UNICODE_STRING