共用方式為


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 中找到替代名稱和列印名稱字串,請使用 SubstituteNameOffsetSubstituteNameLengthPrintNameOffsetPrintNameLength 成員。

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 中找到替代名稱和列印名稱字串,請使用 SubstituteNameOffsetSubstituteNameLengthPrintNameOffsetPrintNameLength 成員。

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)

另請參閱

FILE_OBJECT

FLT_CALLBACK_DATA

FltTagFile

FltTagFileEx

FltUntagFile