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
- 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.
\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.
\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.
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
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe