次の方法で共有


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 (オフセット SubstituteNameOffset) に含まれるシンボリック リンクは相対リンクとして処理されます。それ以外の場合は、絶対リンクとして処理されます。

SymbolicLinkReparseBuffer.PathBuffer[1]

パス文字列の最初の文字。 この文字の後には、メモリ内で文字列の残りの部分が続きます。 パス文字列には、代替名文字列と印刷名文字列が含まれています。 代替名と印刷名の文字列は、PathBuffer の任意の順序で表示できます。 PathBuffer で代替名と印刷名の文字列を見つけるには、 SubstituteNameOffsetSubstituteNameLengthPrintNameOffset、および 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 で代替名と印刷名の文字列を見つけるには、 SubstituteNameOffsetSubstituteNameLengthPrintNameOffset、および 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構造体の固定部分のサイズを返します。

要件

要件
Header fltkernel.h (FltKernel.h を含む)

こちらもご覧ください

FILE_OBJECT

FLT_CALLBACK_DATA

FltTagFile

FltTagFileEx

FltUntagFile