FLT_TAG_DATA_BUFFER 結構 (fltkernel.h)
FLT_TAG_DATA_BUFFER 結構包含重新分析點標籤的相關信息。
語法
typedef struct _FLT_TAG_DATA_BUFFER {
ULONG FileTag;
USHORT TagDataLength;
USHORT UnparsedNameLength;
union {
struct {
USHORT SubstituteNameOffset;
USHORT SubstituteNameLength;
USHORT PrintNameOffset;
USHORT PrintNameLength;
ULONG Flags;
WCHAR PathBuffer[1];
} SymbolicLinkReparseBuffer;
struct {
USHORT SubstituteNameOffset;
USHORT SubstituteNameLength;
USHORT PrintNameOffset;
USHORT PrintNameLength;
WCHAR PathBuffer[1];
} MountPointReparseBuffer;
struct {
UCHAR DataBuffer[1];
} GenericReparseBuffer;
struct {
GUID TagGuid;
UCHAR DataBuffer[1];
} GenericGUIDReparseBuffer;
};
} FLT_TAG_DATA_BUFFER, *PFLT_TAG_DATA_BUFFER;
成員
FileTag
可唯一識別重新分析點的標記。 可以是 ntifs.h 中定義的其中一個 Microsoft 定義IO_REPARSE_TAG_XXX 值,或 ISV 定義的值。
TagDataLength
DataBuffer 成員所指向之重新分析數據的大小,以位元組為單位。
UnparsedNameLength
關聯檔案物件的 FileName 成員所指向之檔名未剖析部分的長度,以位元組為單位。 如需 FileName 成員的詳細資訊,請參閱 FILE_OBJECT。
SymbolicLinkReparseBuffer
當 FileTag IO_REPARSE_TAG_SYMLINK時,您可以使用這個結構來解譯承載。
SymbolicLinkReparseBuffer.SubstituteNameOffset
PathBuffer 陣列中替代名稱字串的位移,以位元組為單位。 請注意,此位移必須除以 sizeof (WCHAR) ,才能取得陣列索引。
SymbolicLinkReparseBuffer.SubstituteNameLength
替代名稱字串的長度,以位元組為單位。 如果此字串 NULL_terminated,SubstituteNameLength 不會包含UNICODE_NULL終止符的空間。
SymbolicLinkReparseBuffer.PrintNameOffset
PathBuffer 陣列印名稱字串的位移,以位元組為單位。 請注意,此位移必須除以 sizeof (WCHAR) ,才能取得陣列索引。
SymbolicLinkReparseBuffer.PrintNameLength
列印名稱字串的長度,以位元組為單位。 如果此字串 NULL_terminated,PrintNameLength 不會包含UNICODE_NULL終止符的空間。
SymbolicLinkReparseBuffer.Flags
指出符號連結是絕對或相對的。 如果 Flags 包含SYMLINK_FLAG_RELATIVE, 則 PathBuffer 中所包含的符號連結會在 offset SubstituteNameOffset (處理為相對連結) ;否則,它會以絕對連結的形式處理。
SymbolicLinkReparseBuffer.PathBuffer[1]
路徑字串的第一個字元。 此字元後面接著字串的其餘部分。 路徑字串包含替代名稱字串和列印名稱字串。 替代名稱和列印名稱字串可以依PathBuffer中的任何順序顯示。 若要在 PathBuffer 中找到替代名稱和列印名稱字串,請使用 SubstituteNameOffset、 SubstituteNameLength、 PrintNameOffset 和 PrintNameLength 成員。
MountPointReparseBuffer
當 FileTag IO_REPARSE_TAG_MOUNT_POINT時,您可以使用這個結構來解譯承載。
MountPointReparseBuffer.SubstituteNameOffset
PathBuffer 陣列中替代名稱字串的位移,以位元組為單位。 請注意,此位移必須除以 sizeof (WCHAR) ,才能取得陣列索引。
MountPointReparseBuffer.SubstituteNameLength
替代名稱字串的長度,以位元組為單位。 如果此字串 NULL_terminated,SubstituteNameLength 不會包含UNICODE_NULL終止符的空間。
MountPointReparseBuffer.PrintNameOffset
PathBuffer 陣列印名稱字串的位移,以位元組為單位。 請注意,此位移必須除以 sizeof (WCHAR) ,才能取得陣列索引。
MountPointReparseBuffer.PrintNameLength
列印名稱字串的長度,以位元組為單位。 如果此字串 NULL_terminated,PrintNameLength 不會包含UNICODE_NULL終止符的空間。
MountPointReparseBuffer.PathBuffer[1]
路徑字串的第一個字元。 此字元後面接著字串的其餘部分。 路徑字串包含替代名稱字串和列印名稱字串。 替代名稱和列印名稱字串可以依PathBuffer中的任何順序顯示。 若要在 PathBuffer 中找到替代名稱和列印名稱字串,請使用 SubstituteNameOffset、 SubstituteNameLength、 PrintNameOffset 和 PrintNameLength 成員。
GenericReparseBuffer
您可以使用這個結構來解譯任何 Microsoft 定義 IO_REPARSE_TAG_XXX 標籤的承載。
GenericReparseBuffer.DataBuffer[1]
緩衝區的指標,其中包含重新分析點的使用者定義數據。
GenericGUIDReparseBuffer
您可以使用這個結構來解譯任何 IO_REPARSE_TAG_XXX 標籤的承載。
GenericGUIDReparseBuffer.TagGuid
識別重新分析點類型的全域唯一標識碼 (GUID) 。 如果 FileTag 不是 Microsoft 標籤,這個成員不能是 NULL。
GenericGUIDReparseBuffer.DataBuffer[1]
緩衝區的指標,其中包含重新分析點的使用者定義數據。
備註
迷你篩選工具可以使用 FLT_TAG_DATA_BUFFER 結構來儲存重新分析點標籤的相關信息。
您可以從等位使用 GenericGUIDReparseBuffer 結構來解譯任何 IO_REPARSE_TAG_XXX 卷標的承載,或選擇性地使用等位內的其中一個其他結構,如下所示:
針對任何 Microsoft 定義的 IO_REPARSE_TAG_XXX 標記,請使用 GenericReparseBuffer 結構。
當 FileTag IO_REPARSE_TAG_SYMLINK時,請使用 SymbolicLinkReparseBuffer 結構。
當 FileTag IO_REPARSE_TAG_MOUNT_POINT 時,請使用 MountPointReparseBuffer 結構。
包含作業之重新分析點標籤數據的FLT_TAG_DATA_BUFFER結構的指標會儲存在作業之FLT_CALLBACK_DATA結構的TagData成員中。
FLT_TAG_DATA_BUFFER_HEADER_SIZE宏會傳回FLT_TAG_DATA_BUFFER結構固定部分的大小。
規格需求
需求 | 值 |
---|---|
標頭 | fltkernel.h (包括 FltKernel.h) |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應