struttura FLT_FILE_NAME_INFORMATION (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;
Membri
Size
Dimensioni, in byte, della struttura FLT_FILE_NAME_INFORMATION.
NamesParsed
Maschera di bit di flag che indicano quali componenti dei nomi sono stati analizzati dalla stringa NomeFltParseFileNameInformation. Si noti che, durante l'analisi della stringa Nome, FltParseFileNameInformation imposta questo flag per ogni componente, indipendentemente dal fatto che il componente sia presente nella stringa. Questi valori possono essere combinati usando l'operatore OR.
Bandiera | Componente |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | FinalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | dell'estensione |
FLTFL_FILE_NAME_PARSED_STREAM | Stream |
FLTFL_FILE_NAME_PARSED_PARENT_DIR | ParentDir |
Format
Formato delle informazioni sul nome archiviate nel membro nome. Questo membro può essere uno dei valori seguenti. Per una spiegazione di questi formati, vedere la sezione Osservazioni seguente.
Valore | Significato |
---|---|
FLT_FILE_NAME_NORMALIZED | Il membro Nome contiene il nome normalizzato per il file. |
FLT_FILE_NAME_OPENED | Il membro Nome contiene il nome utilizzato all'apertura del file. Questa stringa del nome non è normalizzata. |
FLT_FILE_NAME_SHORT | Il membro Nome contiene il nome breve (8.3) del file. Il nome breve di un file non include il nome del volume, il percorso della directory o il nome del flusso. Questa stringa del nome non è normalizzata. |
Name
UNICODE_STRING struttura che contiene la stringa del nome file, formattata come specificato dal membro Format.
Volume
UNICODE_STRING struttura che contiene il nome del volume analizzato dalla stringa Nome. Se formato è FLT_FILE_NAME_SHORT, Volume.Length è zero.
Share
UNICODE_STRING struttura che contiene il nome della condivisione di rete analizzato dalla stringa nome per un file remoto. Se Formato è FLT_FILE_NAME_SHORT, Share.Length è zero.
Extension
UNICODE_STRING struttura che contiene l'estensione analizzata dalla stringa Nome. Se non viene trovata alcuna estensione, FltParseFileNameInformation imposta Extension.Length su zero.
Stream
UNICODE_STRING struttura che contiene il nome del flusso analizzato dalla stringa nome. Se non viene trovato alcun nome di flusso o se Format è FLT_FILE_NAME_SHORT, FltParseFileNameInformation imposta Stream.Length su zero.
FinalComponent
UNICODE_STRING struttura che contiene il componente del nome finale analizzato dalla stringa Nome. 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 che contiene il nome della directory padre analizzato dalla stringa NomeFltParseFileNameInformation. Se non viene trovato alcun nome di directory padre o se Format è FLT_FILE_NAME_SHORT, FltParseFileNameInformation imposta ParentDir.Length su zero.
Osservazioni
Il membro Nome contiene uno dei seguenti elementi:
- Nome normalizzato per il file
- Nome aperto per il file
- Nome breve del file
- Contiene il percorso di directory completo 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 il privilegio di attraversamento per l'intero percorso. Per altre informazioni, vedere FltGetFileNameInformation.)
- Il nome del volume è il nome dell'oggetto dispositivo non permanente del volume , ad esempio "\Device\HarddiskVolume1".
- Tutti i nomi brevi vengono espansi in base ai nomi lunghi equivalenti.
- Tutte le stringhe finali ":$DATA" o "::$DATA" 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 utilizzato all'apertura del file. 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 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 la generazione di nomi di file brevi è stata disabilitata, 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, FltGetFileNameInformationUnsafeo FltGetDestinationFileNameInformation. Queste routine restituiscono un puntatore a una struttura di FLT_FILE_NAME_INFORMATION di proprietà di Filter Manager condivisa da tutti i minifiltri.
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 nome, chiamare FltParseFileNameInformation. Questa routine imposta i valori di Extension, Stream, FinalComponent, ParentDire NamesParsed membri di questa struttura.
I minifiltri sono responsabili della chiamata FltReleaseFileNameInformation per rilasciare la struttura FLT_FILE_NAME_INFORMATION quando non è più necessaria.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | fltkernel.h (include Fltkernel.h) |
Vedere anche
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe