PFLT_GENERATE_FILE_NAME 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_GENERATE_FILE_NAME come routine GenerateFileNameCallback del driver minifilter.

Sintassi

PFLT_GENERATE_FILE_NAME PfltGenerateFileName;

NTSTATUS PfltGenerateFileName(
  [in]           PFLT_INSTANCE Instance,
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PFLT_CALLBACK_DATA CallbackData,
  [in]           FLT_FILE_NAME_OPTIONS NameOptions,
  [out]          PBOOLEAN CacheFileNameInformation,
  [out]          PFLT_NAME_CONTROL FileName
)
{...}

Parametri

[in] Instance

Puntatore dell'istanza opaca per l'istanza del driver minifilter per cui è registrata questa routine di callback.

[in] FileObject

Puntatore a un oggetto file per il file il cui nome viene richiesto.

[in, optional] CallbackData

Puntatore alla struttura dei dati di callback per l'operazione durante la quale viene richiesto questo nome. Questo parametro è NULL quando fltGetFileNameInformationUnsafe viene chiamato per recuperare il nome del file.

[in] NameOptions

FLT_FILE_NAME_OPTIONS valore che specifica il formato del nome, il metodo di query e i flag per questa query di informazioni sul nome file.

[out] CacheFileNameInformation

Puntatore a un valore booleano che specifica se questo nome può essere memorizzato nella cache. Impostare su TRUE nell'output se il nome può essere memorizzato nella cache; impostare su FALSE in caso contrario.

[out] FileName

Puntatore a una struttura di gestione filtri allocata FLT_NAME_CONTROL per ricevere il nome del file nell'output.

Valore restituito

Questa routine di callback restituisce STATUS_SUCCESS o un valore NTSTATUS appropriato.

Commenti

Un driver minifilter che fornisce nomi di file per la cache dei nomi del gestore filtri può registrare una routine di tipo PFLT_GENERATE_FILE_NAME come routine GenerateFileNameCallback del driver minifilter.

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

Gestione filtri chiama questa routine di callback per consentire al driver minifilter di intercettare le richieste di nome file da altri driver minifilter sopra di esso nello stack di istanze del driver minifilter. Utilizzando questa routine di callback e la routine di callback PFLT_NORMALIZE_NAME_COMPONENT , il driver minifilter può fornire le proprie informazioni sul nome file.

Per determinare il formato del nome file richiesto, chiamare FltGetFileNameFormat sul parametro NameOptions .

Prima di Windows 8, questa routine di callback viene chiamata solo per i nomi di file aperti e i nomi di file brevi. Quando gestione filtri riceve una richiesta per un nome di file normalizzato, chiama questa routine di callback per richiedere il nome file aperto. Chiama quindi il driver minifilter PFLT_NORMALIZE_NAME_COMPONENT callback per normalizzare ogni componente nel nome del file.

A partire da Windows 8, questa routine di callback viene chiamata anche per i nomi normalizzati. Quando gestione filtri riceve una richiesta per un nome di file normalizzato, chiama questa routine di callback con FLT_FILE_NAME_NORMALIZED specificato nel parametro NameOptions . Se il minifilter restituisce STATUS_SUCCESS da questo callback, il callback del minifilter PFLT_NORMALIZE_NAME_COMPONENT non verrà chiamato. Se il minifilter restituisce un codice di errore, ad esempio STATUS_NOT_SUPPORTED, il gestore filtri chiamerà di nuovo questa routine di callback, richiedendo il nome del file aperto. Il gestore filtri chiamerà quindi il callback del driver minifilter PFLT_NORMALIZE_NAME_COMPONENT per normalizzare ogni componente nel nome del file.

Quando questa routine di callback viene richiamata, il driver minifilter genera le proprie informazioni sul nome file, in base alle informazioni sul nome file del file system per il file. Per ottenere le informazioni sul nome file del file system per un file, chiamare FltGetFileNameInformation, FltGetFileNameInformationUnsafe o FltGetDestinationFileNameInformation.

Per i nomi di file aperti, le informazioni sul nome file generate devono includere informazioni sul volume. Per un file remoto, deve includere anche informazioni di condivisione.

Di seguito è riportato un esempio di nome file aperto per un file remoto:

\Device\LanManRedirector\MyServer\MyShare\Docume~1\MyUser\My Documents\TestRe~1.txt:stream1

Per altre informazioni sui formati di nome file, vedere le voci di riferimento per FLT_FILE_NAME_INFORMATION e FltParseFileNameInformation.

Dopo aver generato le informazioni sul nome file, il driver minifilter deve chiamare FltCheckAndGrowNameControl per verificare se la struttura FLT_NAME_CONTROL a cui punta il parametro FileName contiene un buffer dei nomi sufficientemente grande da contenere il nome file generato. Se il buffer dei nomi è troppo piccolo, FltCheckAndGrowNameControl lo sostituisce con uno più grande. Il driver minifilter archivia quindi le informazioni sul nome del file nel buffer dei nomi e restituisce.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione fltkernel.h (include Fltkernel.h)
IRQL PASSIVE_LEVEL

Vedi anche

FLT_CALLBACK_DATA

FLT_FILE_NAME_INFORMATION

FLT_FILE_NAME_OPTIONS

FLT_NAME_CONTROL

FLT_REGISTRATION

FltCheckAndGrowNameControl

FltGetDestinationFileNameInformation

FltGetFileNameFormat

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetFileNameQueryMethod

FltParseFileName

FltParseFileNameInformation

FltPurgeFileNameInformationCache

FltRegisterFilter

PFLT_NORMALIZE_CONTEXT_CLEANUP

PFLT_NORMALIZE_NAME_COMPONENT

PFLT_NORMALIZE_NAME_COMPONENT_EX