struktur FLT_TAG_DATA_BUFFER (fltkernel.h)

Struktur FLT_TAG_DATA_BUFFER berisi informasi tentang tag titik pemilah ulang.

Sintaks

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;

Anggota

FileTag

Tag yang secara unik mengidentifikasi titik pemilah ulang. Dapat berupa salah satu nilai IO_REPARSE_TAG_XXXX yang ditentukan Microsoft yang ditentukan dalam ntifs.h, atau nilai yang ditentukan ISV.

TagDataLength

Ukuran, dalam byte, dari data pemisahan ulang yang ditujukkan oleh anggota DataBuffer .

UnparsedNameLength

Panjang, dalam byte, dari bagian yang tidak dipisahkan dari nama file yang diarahkan oleh anggota FileName dari objek file terkait. Untuk informasi selengkapnya tentang anggota FileName , lihat FILE_OBJECT.

SymbolicLinkReparseBuffer

Saat FileTag IO_REPARSE_TAG_SYMLINK, Anda dapat menggunakan struktur ini untuk menginterpretasikan payload.

SymbolicLinkReparseBuffer.SubstituteNameOffset

Offset, dalam byte, dari string nama pengganti di array PathBuffer . Perhatikan bahwa offset ini harus dibagi berdasarkan sizeof(WCHAR) untuk mendapatkan indeks array.

SymbolicLinkReparseBuffer.SubstituteNameLength

Panjang, dalam byte, dari string nama pengganti. Jika string ini NULL_terminated, SubstituteNameLength tidak menyertakan ruang untuk terminator UNICODE_NULL.

SymbolicLinkReparseBuffer.PrintNameOffset

Offset, dalam byte, dari string nama cetak di array PathBuffer . Perhatikan bahwa offset ini harus dibagi berdasarkan sizeof(WCHAR) untuk mendapatkan indeks array.

SymbolicLinkReparseBuffer.PrintNameLength

Panjang, dalam byte, dari string nama cetak. Jika string ini NULL_terminated, PrintNameLength tidak menyertakan ruang untuk terminator UNICODE_NULL.

SymbolicLinkReparseBuffer.Flags

Menunjukkan apakah tautan simbolis absolut atau relatif. Jika Bendera berisi SYMLINK_FLAG_RELATIVE, tautan simbolis yang terkandung dalam PathBuffer (pada offset SubstituteNameOffset) diproses sebagai tautan relatif; jika tidak, itu diproses sebagai tautan absolut.

SymbolicLinkReparseBuffer.PathBuffer[1]

Karakter pertama string jalur. Karakter ini diikuti dalam memori oleh sisa string. String jalur berisi string nama pengganti dan string nama cetak. Nama pengganti dan string nama cetak dapat muncul dalam urutan apa pun di PathBuffer. Untuk menemukan string nama pengganti dan nama cetak di PathBuffer, gunakan anggota SubstituteNameOffset, SubstituteNameLength, PrintNameOffset, dan PrintNameLength .

MountPointReparseBuffer

Saat FileTag IO_REPARSE_TAG_MOUNT_POINT, Anda dapat menggunakan struktur ini untuk menginterpretasikan payload.

MountPointReparseBuffer.SubstituteNameOffset

Offset, dalam byte, dari string nama pengganti di array PathBuffer . Perhatikan bahwa offset ini harus dibagi berdasarkan sizeof(WCHAR) untuk mendapatkan indeks array.

MountPointReparseBuffer.SubstituteNameLength

Panjang, dalam byte, dari string nama pengganti. Jika string ini NULL_terminated, SubstituteNameLength tidak menyertakan ruang untuk terminator UNICODE_NULL.

MountPointReparseBuffer.PrintNameOffset

Offset, dalam byte, dari string nama cetak di array PathBuffer . Perhatikan bahwa offset ini harus dibagi berdasarkan sizeof(WCHAR) untuk mendapatkan indeks array.

MountPointReparseBuffer.PrintNameLength

Panjang, dalam byte, dari string nama cetak. Jika string ini NULL_terminated, PrintNameLength tidak menyertakan ruang untuk terminator UNICODE_NULL.

MountPointReparseBuffer.PathBuffer[1]

Karakter pertama string jalur. Karakter ini diikuti dalam memori oleh sisa string. String jalur berisi string nama pengganti dan string nama cetak. Nama pengganti dan string nama cetak dapat muncul dalam urutan apa pun di PathBuffer. Untuk menemukan string nama pengganti dan nama cetak di PathBuffer, gunakan anggota SubstituteNameOffset, SubstituteNameLength, PrintNameOffset, dan PrintNameLength .

GenericReparseBuffer

Anda dapat menggunakan struktur ini untuk menginterpretasikan payload untuk tag IO_REPARSE_TAG_XXX yang ditentukan Microsoft.

GenericReparseBuffer.DataBuffer[1]

Penunjuk ke buffer yang berisi data yang ditentukan pengguna untuk titik pemilah ulang.

GenericGUIDReparseBuffer

Anda dapat menggunakan struktur ini untuk menginterpretasikan payload untuk tag IO_REPARSE_TAG_XXX .

GenericGUIDReparseBuffer.TagGuid

Pengidentifikasi unik global (GUID) yang mengidentifikasi jenis titik pemisahan ulang. Jika FileTag bukan tag Microsoft, anggota ini tidak boleh NULL.

GenericGUIDReparseBuffer.DataBuffer[1]

Penunjuk ke buffer yang berisi data yang ditentukan pengguna untuk titik pemilah ulang.

Keterangan

Minifilter dapat menggunakan struktur FLT_TAG_DATA_BUFFER untuk menyimpan informasi tentang tag titik pemilah ulang.

Dari penyatuan, Anda dapat menggunakan struktur GenericGUIDReparseBuffer untuk menginterpretasikan payload untuk tag IO_REPARSE_TAG_XXX , atau secara opsional menggunakan salah satu struktur lain dalam penyatuan sebagai berikut:

  • Gunakan struktur GenericReparseBuffer untuk tag IO_REPARSE_TAG_XXX yang ditentukan Microsoft.

  • Gunakan struktur SymbolicLinkReparseBuffer saat FileTag IO_REPARSE_TAG_SYMLINK.

  • Gunakan struktur MountPointReparseBuffer saat FileTag IO_REPARSE_TAG_MOUNT_POINT.

Penunjuk ke struktur FLT_TAG_DATA_BUFFER yang berisi data tag titik pemilah ulang untuk operasi disimpan di anggota TagData dari struktur FLT_CALLBACK_DATA untuk operasi.

Makro FLT_TAG_DATA_BUFFER_HEADER_SIZE mengembalikan ukuran bagian tetap dari struktur FLT_TAG_DATA_BUFFER.

Persyaratan

Persyaratan Nilai
Header fltkernel.h (termasuk FltKernel.h)

Lihat juga

FILE_OBJECT

FLT_CALLBACK_DATA

FltTagFile

FltTagFileEx

FltUntagFile