Condividi tramite


PFLT_NORMALIZE_NAME_COMPONENT_EX funzione di callback (fltkernel.h)

Un driver minifilter che fornisce nomi di file per la cache dei nomi del gestore filtri può registrare una routine di tipo PFLT_NORMALIZE_NAME_COMPONENT_EX come routine di callback del driver minifilter NormalizeNameComponentExCall back.

Sintassi

PFLT_NORMALIZE_NAME_COMPONENT_EX PfltNormalizeNameComponentEx;

NTSTATUS PfltNormalizeNameComponentEx(
  [in]      PFLT_INSTANCE Instance,
  [in]      PFILE_OBJECT FileObject,
  [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
)
{...}

Parametri

[in] Instance

Puntatore a istanze opache per l'istanza del driver minifilter per cui è registrata questa routine di callback.

[in] FileObject

Puntatore all'oggetto file per il file il cui nome viene richiesto o il file che rappresenta la destinazione dell'operazione di IRP_MJ_SET_INFORMATION se è impostato il flag FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME. Per altre informazioni, vedere il parametro flag di seguito.

[in] ParentDirectory

Puntatore a una struttura UNICODE_STRING che contiene il nome della directory padre per questo componente del nome.

[in] VolumeNameLength

Lunghezza, in byte, del nome della directory padre archiviata nella struttura a cui punta il parametro ParentDirectory.

[in] Component

Puntatore a una struttura UNICODE_STRING che contiene il componente del nome da espandere.

[out] ExpandComponentName

Puntatore a una struttura FILE_NAMES_INFORMATION che riceve le informazioni sul nome del file espanso (normalizzato) per il componente del nome.

[in] ExpandComponentNameLength

Lunghezza, in byte, del buffer a cui punta il parametro ExpandComponentName.

[in] Flags

Contrassegni di normalizzazione dei nomi. FLTFL_NORMALIZE_NAME_CASE_SENSITIVE specifica che il nome da normalizzare fa distinzione tra maiuscole e minuscole. FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME specifica che la routine di callback è stata chiamata per il servizio di un FltGetDestinationFileNameInformation chiamata di routine. Se il flag FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME è impostato, FileObject rappresenta il file o la directory di destinazione dell'operazione di IRP_MJ_SET_INFORMATION. Se il flag FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME non è impostato, FileObject rappresenta il file o la directory il cui nome viene richiesto.

[in, out] NormalizationContext

Puntatore a informazioni di contesto fornite dal driver minifilter da passare in qualsiasi chiamata successiva a questa routine di callback effettuata per normalizzare i componenti rimanenti nello stesso percorso del nome file.

Valore restituito

Questa routine di callback restituisce STATUS_SUCCESS o un valore NTSTATUS appropriato. Se il componente del nome specificato dal parametro componente non esiste nella directory padre specificata dal parametro ParentDirectory, questa routine di callback deve restituire STATUS_NO_SUCH_FILE. Se questa routine di callback invia una richiesta di IRP_MN_QUERY_DIRECTORY (FileNamesInformation) alla directory padre, il file system restituisce il codice di stato corretto. In questo caso, questo callback può semplicemente restituire il codice di stato restituito dal file system.

Osservazioni

Un driver minifilter che fornisce nomi di file per la cache dei nomi del gestore filtri può registrare una routine di tipo PFLT_NORMALIZE_NAME_COMPONENT_EX come routine di callback del driver minifilter NormalizeNameComponentExCall back.

La differenza principale tra la routine di callback NormalizeNameComponentExCallback e la routine di callback NormalizeNameComponentCallback (di tipo PFLT_NORMALIZE_NAME_COMPONENT) è che la routine di callback NormalizeNameComponentExCallback supporta il parametro aggiuntivo FileObject. L'oggetto file (FileObject) può essere utilizzato dal driver minifilter per recuperare la struttura TXN_PARAMETER_BLOCK per l'operazione che fa parte del file o della directory chiamando la routine IoGetTransactionParameterBlock. La struttura TXN_PARAMETER_BLOCK può essere utilizzata dal driver minifilter per inviare richieste di creazione personalizzate nel contesto della transazione a cui partecipa l'oggetto file.

Per registrare questa routine di callback, il driver minifilter archivia l'indirizzo di una routine di tipo PFLT_NORMALIZE_NAME_COMPONENT_EX nel NormalizeNameComponentExCallback membro della struttura FLT_REGISTRATION che il driver minifilter passa come parametro a FltRegisterFilter.

Gestione filtri chiama questa routine di callback per eseguire una query sul driver minifilter per i nomi normalizzati per i componenti nel percorso del nome file i cui nomi sono stati modificati dal driver minifilter. Se il percorso del nome file contiene più componenti di questo tipo, il gestore filtri può chiamare più volte questa routine di callback durante il processo di normalizzazione di tutti i componenti nel percorso. Il driver minifilter può usare il parametro NormalizationContext per passare le informazioni di contesto alle chiamate successive a questa routine di callback.

Se il driver minifilter usa il parametro NormalizationContext, deve anche registrare una routine di callback di pulizia del contesto di normalizzazione. Per altre informazioni, vedere la voce di riferimento per PFLT_NORMALIZE_CONTEXT_CLEANUP.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione fltkernel.h (include Fltkernel.h)
IRQL PASSIVE_LEVEL

Vedere anche

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