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 minifilterComponentExCallback .
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 istanza opaca per l'istanza del driver minifilter per cui viene registrata questa routine di callback.
[in] FileObject
Puntatore all'oggetto file per il file il cui nome viene richiesto o il file di destinazione dell'operazione di IRP_MJ_SET_INFORMATION se il flag di FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME è impostato. Per altre informazioni, vedere il parametro Flags seguente.
[in] ParentDirectory
Puntatore a una struttura UNICODE_STRING contenente 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 nome da espandere.
[out] ExpandComponentName
Puntatore a una struttura FILE_NAMES_INFORMATION che riceve le informazioni sul nome file espanso (normalizzato) per il componente 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 è distinzione tra maiuscole e minuscole. FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME specifica che la routine di callback è stata chiamata al servizio di una chiamata di routine FltGetDestinationFileNameInformation . Se il flag FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME è impostato, FileObject rappresenta il file/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/directory il cui nome viene richiesto.
[in, out] NormalizationContext
Puntatore a informazioni di contesto fornite dal driver minifilter da passare in tutte le chiamate successive 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 nome specificato dal parametro Component non esiste nella directory padre specificata dal parametro ParentDirectory , questa routine di callback deve restituire STATUS_NO_SUCH_FILE. Se questa routine di callback genera una richiesta di IRP_MN_QUERY_DIRECTORY (FileNamesInformation) alla directory padre, il file system restituisce il codice di stato corretto. In questa situazione, questo callback può semplicemente restituire il codice di stato restituito dal file system.
Commenti
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 minifilterComponentExCallback .
La differenza principale tra la routine di callback NormalNameComponentExCallback e la routine di callback NormalNameComponentCallback (di tipo PFLT_NORMALIZE_NAME_COMPONENT) è che la routine di callback NormalNameComponentExCallback supporta il parametro FileObject aggiuntivo. L'oggetto file (FileObject) può essere usato dal driver minifilter per recuperare la struttura di TXN_PARAMETER_BLOCK per l'operazione a cui partecipa il file/directory chiamando la routine IoGetTransactionParameterBlock . La struttura TXN_PARAMETER_BLOCK può essere usata dal driver minifilter per inviare richieste di creazione personalizzate nel contesto della transazione in 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 membro NormalNameComponentExCallbackdella struttura FLT_REGISTRATION che il driver minifilter passa come parametro a FltRegisterFilter.
Gestione filtri chiama questa routine di callback per eseguire query sul driver minifilter per i nomi normalizzati per i componenti nel percorso del nome file i cui nomi del driver minifilter sono stati modificati. Se il percorso del nome file contiene più di un componente, la gestione filtri può chiamare la routine di callback più volte nel 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 del contesto di normalizzazione. Per altre informazioni, vedere la voce di riferimento per PFLT_NORMALIZE_CONTEXT_CLEANUP.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | fltkernel.h (includere Fltkernel.h) |
IRQL | PASSIVE_LEVEL |
Vedi anche
FltGetDestinationFileNameInformation
IoGetTransactionParameterBlock