FLT_FILE_NAME_INFORMATION struttura (fltkernel.h)

La struttura FLT_FILE_NAME_INFORMATION contiene informazioni sul nome file.

Sintassi

typedef struct _FLT_FILE_NAME_INFORMATION {
  USHORT                     Size;
  FLT_FILE_NAME_PARSED_FLAGS NamesParsed;
  FLT_FILE_NAME_OPTIONS      Format;
  UNICODE_STRING             Name;
  UNICODE_STRING             Volume;
  UNICODE_STRING             Share;
  UNICODE_STRING             Extension;
  UNICODE_STRING             Stream;
  UNICODE_STRING             FinalComponent;
  UNICODE_STRING             ParentDir;
} FLT_FILE_NAME_INFORMATION, *PFLT_FILE_NAME_INFORMATION;

Members

Size

Dimensioni, in byte, della struttura FLT_FILE_NAME_INFORMATION.

NamesParsed

Maschera di flag che indicano quali componenti dei nomi sono stati analizzati dalla stringa Name by FltParseFileNameInformation. Si noti che, durante l'analisi della stringa Name , FltParseFileNameInformation imposta questo flag per ogni componente, se il componente è presente nella stringa. Questi valori possono essere combinati usando l'operatore OR.

Contrassegno Componente
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT FinalComponent
FLTFL_FILE_NAME_PARSED_EXTENSION Estensione
FLTFL_FILE_NAME_PARSED_STREAM Stream
FLTFL_FILE_NAME_PARSED_PARENT_DIR ParentDir

Format

Formato delle informazioni sul nome archiviate nel membro Name . Questo membro può essere uno dei valori seguenti. Per una spiegazione di questi formati, vedere la sezione Osservazioni seguenti.

Valore Significato
FLT_FILE_NAME_NORMALIZED Il membro Name contiene il nome normalizzato per il file.
FLT_FILE_NAME_OPENED Il membro Name contiene il nome utilizzato quando il file è stato aperto. Questa stringa di nome non è normalizzata.
FLT_FILE_NAME_SHORT Il membro Name contiene il nome breve (8.3) per il file. Il nome breve per un file non include il nome del volume, il percorso della directory o il nome del flusso. Questa stringa di nome non è normalizzata.

Name

UNICODE_STRING struttura contenente la stringa del nome file, formattata come specificato dal membro Format .

Volume

UNICODE_STRING struttura contenente il nome del volume analizzato dalla stringa Nome . Se Format è FLT_FILE_NAME_SHORT, Volume.Length è zero.

Share

UNICODE_STRING struttura contenente il nome della condivisione di rete analizzato dalla stringa Name per un file remoto. Se Format è FLT_FILE_NAME_SHORT, Share.Length è zero.

Extension

UNICODE_STRING struttura contenente l'estensione analizzata dalla stringa Name . Se non viene trovata alcuna estensione, FltParseFileNameInformation imposta Extension.Length su zero.

Stream

UNICODE_STRING struttura contenente il nome del flusso analizzato dalla stringa Name . Se non viene trovato alcun nome di flusso o se Format è FLT_FILE_NAME_SHORT, FltParseFileNameInformation imposta Stream. Lunghezza su zero.

FinalComponent

UNICODE_STRING struttura contenente il componente nome finale analizzato dalla stringa Name . Se non viene trovato alcun nome finale del componente o se Format è FLT_FILE_NAME_SHORT, FltParseFileNameInformation imposta FinalComponent.Length su zero.

ParentDir

UNICODE_STRING struttura contenente il nome della directory padre analizzato dalla stringa Name by FltParseFileNameInformation. Se non viene trovato alcun nome della directory padre o se Format è FLT_FILE_NAME_SHORT, FltParseFileNameInformation imposta ParentDir.Length su zero.

Commenti

Il membro Name contiene uno dei seguenti elementi:

  • Nome normalizzato per il file
  • Nome aperto per il file
  • Nome breve per il file
Un nome file viene considerato normalizzato se tutte le operazioni seguenti sono vere:
  • Contiene il percorso completo della directory per il file, incluso il nome del volume, a meno che l'utente non abbia aperto il file in base all'ID file, ma non abbia privilegi di attraversamento per l'intero percorso. Per altre informazioni, vedere FltGetFileNameInformation.
  • Il nome del volume è il nome dell'oggetto dispositivo nonpersistente del volume, ad esempio "\Device\HarddiskVolume1".
  • Tutti i nomi brevi vengono espansi nei nomi lunghi equivalenti.
  • Le stringhe ":$DATA" o "::$DATA" finali vengono rimosse dal nome del flusso.
  • Tutti i punti di montaggio vengono risolti.
Di seguito è riportato un esempio di nome file normalizzato per un file locale:
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

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

\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Il nome aperto per un file è il nome usato quando il file è stato aperto. Come il nome normalizzato, contiene il percorso completo della directory per il file, incluso il nome del volume. Differisce dal nome normalizzato nei modi seguenti:

  • Il percorso della directory per il file può contenere nomi brevi e nomi lunghi.
  • Le stringhe finali ":$DATA" e "::$DATA" non vengono rimosse dal nome del flusso.
  • I punti di montaggio non vengono risolti.
Di seguito è riportato un esempio di nome file aperto per un file locale:
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA

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

\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Il nome breve per un file è il nome breve (8.3) per il componente finale del nome del file. Poiché viene generato quando il file viene aperto, il nome breve non è disponibile per un oggetto file non aperto e non è disponibile nel percorso create dispatch ("pre-create"). Non è disponibile anche per gli oggetti file di flusso NTFS. Non tutti i file aperti hanno nomi di file brevi. Ad esempio, nelle partizioni NTFS in cui è stata disabilitata la generazione di nomi di file brevi, non sono presenti nomi di file brevi.

Di seguito è riportato un esempio di nome breve per un file:

TestRe~1.txt

Per ottenere una struttura FLT_FILE_NAME_INFORMATION per un file, chiamare FltGetFileNameInformation, FltGetFileNameInformationUnsafe o FltGetDestinationFileNameInformation. Queste routine restituiscono un puntatore a una struttura di FLT_FILE_NAME_INFORMATION di proprietà di Filter Manager condivisa da tutti i minifilter.

Nota Non modificare il contenuto delle strutture FLT_FILE_NAME_INFORMATION, perché queste strutture vengono memorizzate nella cache da Gestione filtri in modo che tutti i minifiltri possano usarli. Se il minifilter deve modificare queste informazioni in qualche modo, deve copiare le informazioni in un altro buffer.
 
I file system, ad esempio NTFS e FAT, usano una cache del tunnel per volume per mantenere brevemente i nomi dei file e altri metadati per i file rinominati, collegati a o eliminati. Questo tunneling del nome file può causare l'invalidazione delle informazioni sul nome file normalizzate restituite da una chiamata di preoperazione a FltGetFileNameInformation, FltGetFileNameInformationUnsafe o FltGetDestinationFileNameInformation. Se un minifilter recupera le informazioni sul nome file normalizzato nella routine di callback preoperazione (PFLT_PRE_OPERATION_CALLBACK) per un'operazione di creazione, collegamento rigido o ridenominazione, deve chiamare FltGetTunneledName dalla routine di callback postoperazione (PFLT_POST_OPERATION_CALLBACK) per recuperare le informazioni sul nome del file corrette per il file.

Sebbene contenga numerose strutture UNICODE_STRING , la struttura FLT_FILE_NAME_INFORMATION non occupa molto spazio in memoria perché tutte le strutture UNICODE_STRING in una struttura FLT_FILE_NAME_INFORMATION condividono un singolo buffer.

Per analizzare il contenuto della stringa Name , chiamare FltParseFileNameInformation. Questa routine imposta i valori di Extension, Stream, FinalComponent, ParentDir e NamesParsed membri di questa struttura.

I minifilter sono responsabili della chiamata a FltReleaseFileNameInformation per rilasciare la struttura di FLT_FILE_NAME_INFORMATION quando non è più necessaria.

Requisiti

Requisito Valore
Intestazione fltkernel.h (includere Fltkernel.h)

Vedi anche

FLT_FILE_NAME_OPTIONS

FltGetDestinationFileNameInformation

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetTunneledName

FltParseFileName

FltParseFileNameInformation

FltReferenceFileNameInformation

FltReleaseFileNameInformation

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK

UNICODE_STRING