FLT_TAG_DATA_BUFFER struttura (fltkernel.h)

La struttura FLT_TAG_DATA_BUFFER contiene informazioni su un tag punto di ripristino.

Sintassi

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;

Members

FileTag

Tag che identifica in modo univoco il punto di correzione. Può essere uno dei valori definiti da Microsoft IO_REPARSE_TAG_XXX definiti in ntifs.h o un valore definito dall'ISV.

TagDataLength

Dimensioni, in byte, dei dati di ripristino a cui punta il membro DataBuffer .

UnparsedNameLength

Lunghezza, in byte, della parte non riparata del nome file a cui fa riferimento il membro FileName dell'oggetto file associato. Per altre informazioni sul membro FileName , vedere FILE_OBJECT.

SymbolicLinkReparseBuffer

Quando FileTag è IO_REPARSE_TAG_SYMLINK, è possibile usare questa struttura per interpretare il payload.

SymbolicLinkReparseBuffer.SubstituteNameOffset

Offset, in byte, della stringa del nome sostitutivo nella matrice PathBuffer . Si noti che questo offset deve essere diviso per sizeof(WCHAR) per ottenere l'indice della matrice.

SymbolicLinkReparseBuffer.SubstituteNameLength

Lunghezza, in byte, della stringa del nome sostitutivo. Se questa stringa è NULL_terminated, SubstituteNameLength non include spazio per il terminatore UNICODE_NULL.

SymbolicLinkReparseBuffer.PrintNameOffset

Offset, in byte, della stringa del nome di stampa nella matrice PathBuffer . Si noti che questo offset deve essere diviso per sizeof(WCHAR) per ottenere l'indice della matrice.

SymbolicLinkReparseBuffer.PrintNameLength

Lunghezza, in byte, della stringa del nome di stampa. Se questa stringa è NULL_terminated, PrintNameLength non include spazio per il terminatore UNICODE_NULL.

SymbolicLinkReparseBuffer.Flags

Indica se il collegamento simbolico è assoluto o relativo. Se Flag contiene SYMLINK_FLAG_RELATIVE, il collegamento simbolico contenuto in PathBuffer (in offset SubstituteNameOffset) viene elaborato come collegamento relativo; in caso contrario, viene elaborato come collegamento assoluto.

SymbolicLinkReparseBuffer.PathBuffer[1]

Primo carattere della stringa di percorso. Questo carattere viene seguito in memoria dal resto della stringa. La stringa del percorso contiene la stringa nome sostitutiva e la stringa del nome di stampa. Le stringhe nome di sostituzione e nome di stampa possono essere visualizzate in qualsiasi ordine in PathBuffer. Per individuare le stringhe di nome sostitutivo e nome di stampa in PathBuffer, usare i membri SubstituteNameOffset, SubstituteNameLength, PrintNameOffset e PrintNameLength.

MountPointReparseBuffer

Quando FileTag è IO_REPARSE_TAG_MOUNT_POINT, è possibile usare questa struttura per interpretare il payload.

MountPointReparseBuffer.SubstituteNameOffset

Offset, in byte, della stringa del nome sostitutivo nella matrice PathBuffer . Si noti che questo offset deve essere diviso per sizeof(WCHAR) per ottenere l'indice della matrice.

MountPointReparseBuffer.SubstituteNameLength

Lunghezza, in byte, della stringa del nome sostitutivo. Se questa stringa è NULL_terminated, SubstituteNameLength non include spazio per il terminatore UNICODE_NULL.

MountPointReparseBuffer.PrintNameOffset

Offset, in byte, della stringa del nome di stampa nella matrice PathBuffer . Si noti che questo offset deve essere diviso per sizeof(WCHAR) per ottenere l'indice della matrice.

MountPointReparseBuffer.PrintNameLength

Lunghezza, in byte, della stringa del nome di stampa. Se questa stringa è NULL_terminated, PrintNameLength non include spazio per il terminatore UNICODE_NULL.

MountPointReparseBuffer.PathBuffer[1]

Primo carattere della stringa di percorso. Questo carattere viene seguito in memoria dal resto della stringa. La stringa del percorso contiene la stringa nome sostitutiva e la stringa del nome di stampa. Le stringhe nome di sostituzione e nome di stampa possono essere visualizzate in qualsiasi ordine in PathBuffer. Per individuare le stringhe di nome sostitutivo e nome di stampa in PathBuffer, usare i membri SubstituteNameOffset, SubstituteNameLength, PrintNameOffset e PrintNameLength.

GenericReparseBuffer

È possibile usare questa struttura per interpretare il payload per qualsiasi tag IO_REPARSE_TAG_XXX definito da Microsoft.

GenericReparseBuffer.DataBuffer[1]

Puntatore a un buffer che contiene dati definiti dall'utente per il punto di ripristino.

GenericGUIDReparseBuffer

È possibile usare questa struttura per interpretare il payload per qualsiasi tag IO_REPARSE_TAG_XXX .

GenericGUIDReparseBuffer.TagGuid

Identificatore univoco globale (GUID) che identifica il tipo di punto reparse. Se FileTag non è un tag Microsoft, questo membro non può essere NULL.

GenericGUIDReparseBuffer.DataBuffer[1]

Puntatore a un buffer che contiene dati definiti dall'utente per il punto di ripristino.

Commenti

Un minifilter può usare la struttura di FLT_TAG_DATA_BUFFER per archiviare informazioni su un tag punto di ripristino.

Dall'unione è possibile usare la struttura GenericGUIDReparseBuffer per interpretare il payload per qualsiasi tag IO_REPARSE_TAG_XXX oppure usare facoltativamente una delle altre strutture all'interno dell'unione come indicato di seguito:

  • Usare la struttura GenericReparseBuffer per qualsiasi tag IO_REPARSE_TAG_XXX definito da Microsoft.

  • Usare la struttura SimbolicLinkReparseBuffer quando FileTag è IO_REPARSE_TAG_SYMLINK.

  • Usare la struttura MountPointReparseBuffer quando FileTag è IO_REPARSE_TAG_MOUNT_POINT.

Un puntatore a una struttura di FLT_TAG_DATA_BUFFER che contiene i dati dei tag dei punti reparse per un'operazione viene archiviato nel membro TagData della struttura FLT_CALLBACK_DATA per l'operazione.

La macro FLT_TAG_DATA_BUFFER_HEADER_SIZE restituisce le dimensioni della parte fissa della struttura FLT_TAG_DATA_BUFFER.

Requisiti

Requisito Valore
Intestazione fltkernel.h (include FltKernel.h)

Vedi anche

FILE_OBJECT

FLT_CALLBACK_DATA

FltTagFile

FltTagFileEx

FltUntagFile