FLT_FILE_NAME_INFORMATION結構 (fltkernel.h)
FLT_FILE_NAME_INFORMATION 結構包含檔名資訊。
語法
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;
成員
Size
FLT_FILE_NAME_INFORMATION 結構的大小,以位元組為單位。
NamesParsed
旗標的位掩碼,指出 FltParseFileNameInformation 已從 Name 字串剖析哪些名稱元件。 請注意,剖析 Name 字串時, FltParseFileNameInformation 會為每個元件設定此旗標,指出該元件是否出現在字串中。 您可以使用 OR 運算符來合併這些值。
旗標 | 元件 |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | FinalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | 副檔名 |
FLTFL_FILE_NAME_PARSED_STREAM | 串流 |
FLTFL_FILE_NAME_PARSED_PARENT_DIR | ParentDir |
Format
儲存在 Name 成員中的名稱資訊格式。 這個成員可以是下列其中一個值。 (如需這些格式的說明,請參閱下列一節。)
值 | 意義 |
---|---|
FLT_FILE_NAME_NORMALIZED | Name 成員包含檔案的標準化名稱。 |
FLT_FILE_NAME_OPENED | Name 成員包含開啟檔案時所使用的名稱。 此名稱字串未正規化。 |
FLT_FILE_NAME_SHORT | Name 成員包含檔案的簡短 (8.3) 名稱。 檔案的簡短名稱不包含磁碟區名稱、目錄路徑或數據流名稱。 此名稱字串未正規化。 |
Name
UNICODE_STRING 包含檔名字符串的結構,格式為 Format 成員所指定的 格式 。
Volume
UNICODE_STRING結構,其中包含從 Name 字串剖析的磁碟區名稱。 如果 Format 是 FLT_FILE_NAME_SHORT,Volume.Length 為零。
Share
UNICODE_STRING結構,其中包含從遠端檔案的 Name 字串剖析的網路共享名稱。 如果 Format 是FLT_FILE_NAME_SHORT, 則 Share.Length 為零。
Extension
UNICODE_STRING結構,其中包含從 Name 字串剖析的延伸模組。 如果找不到擴充功能, FltParseFileNameInformation 會將 Extension.Length 設定為零。
Stream
UNICODE_STRING結構,其中包含從 Name 字串剖析的數據流名稱。 如果找不到數據流名稱,或者 Format 是FLT_FILE_NAME_SHORT,FltParseFileNameInformation 會設定 Stream。長度為零。
FinalComponent
UNICODE_STRING結構,其中包含從 Name 字串剖析的最終名稱元件。 如果找不到最終元件名稱,或者 Format 是 FLT_FILE_NAME_SHORT,FltParseFileNameInformation 會將 FinalComponent.Length 設定為零。
ParentDir
UNICODE_STRING結構,其中包含 FltParseFileNameInformation 從 Name 字串剖析的父目錄名稱。 如果找不到父目錄名稱,或者 Format 是 FLT_FILE_NAME_SHORT,FltParseFileNameInformation 會將 ParentDir.Length 設定為零。
備註
Name 成員包含下列其中一項:
- 檔案的正規化名稱
- 檔案的已開啟名稱
- 檔案的簡短名稱
- 它包含檔案的完整目錄路徑,包括磁碟區名稱,除非使用者依檔案標識元開啟檔案,但沒有整個路徑的周遊許可權。 (如需詳細資訊,請參閱 FltGetFileNameInformation.)
- 磁碟區名稱是磁碟區的非持續性裝置物件名稱 (例如“\Device\HarddiskVolume1”) 。
- 所有簡短名稱都會展開為相等的長名稱。
- 任何尾端 “:$DATA” 或 “::$DATA” 字串都會從數據流名稱中移除。
- 所有裝入點都會解析。
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
以下是遠端檔案的標準化檔名範例:
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
檔案 的開啟名稱 是開啟檔案時所使用的名稱。 如同標準化名稱,它包含檔案的完整目錄路徑,包括磁碟區名稱。 其與正規化名稱不同,方式如下:
- 檔案的目錄路徑可以包含簡短名稱以及長名稱。
- 結尾的 “:$DATA” 和 “::$DATA” 字串不會從數據流名稱中移除。
- 無法解析裝入點。
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA
以下是遠端檔案已開啟的檔名範例:
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
檔案的 簡短名稱 是檔名最終元件的簡短 (8.3) 名稱。 因為檔案在開啟時產生,所以簡短名稱不適用於未開啟的檔案物件,而且無法在建立分派 (「預先建立」) 路徑中使用。 它不適用於NTFS資料流檔案物件。 並非所有開啟的檔案都有簡短的檔名。 例如,在停用產生簡短檔名的NTFS磁碟分區上,沒有檔案有簡短的檔名。
以下是檔案的簡短名稱範例:
TestRe~1.txt
若要取得檔案的FLT_FILE_NAME_INFORMATION結構,請呼叫 FltGetFileNameInformation、 FltGetFileNameInformationUnsafe 或 FltGetDestinationFileNameInformation。 這些例程會傳回所有迷你篩選所共用之篩選管理員所擁有FLT_FILE_NAME_INFORMATION結構的指標。
雖然它包含許多 UNICODE_STRING 結構,但FLT_FILE_NAME_INFORMATION結構不會佔用記憶體中太多空間,因為FLT_FILE_NAME_INFORMATION結構中的所有UNICODE_STRING結構都會共用單一緩衝區。
若要剖析 Name 字串的內容,請呼叫 FltParseFileNameInformation。 這個例程會設定此結構的 Extension、Stream、FinalComponent、ParentDir 和 NamesParsed 成員的值。
迷你篩選負責呼叫 FltReleaseFileNameInformation ,以在不再需要結構時釋放FLT_FILE_NAME_INFORMATION結構。
規格需求
需求 | 值 |
---|---|
標頭 | fltkernel.h (包含 Fltkernel.h) |
另請參閱
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe