struttura REPARSE_DATA_BUFFER (ntifs.h)

La struttura REPARSE_DATA_BUFFER contiene i dati dei reparse point per un punto di riferimento Microsoft. È invece possibile usare REPARSE_DATA_BUFFER_EX . I proprietari di reparse point di terze parti devono usare invece la struttura REPARSE_GUID_DATA_BUFFER .

Sintassi

typedef struct _REPARSE_DATA_BUFFER {
  ULONG  ReparseTag;
  USHORT ReparseDataLength;
  USHORT Reserved;
  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;
  } DUMMYUNIONNAME;
} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;

Members

ReparseTag

Tag del punto di ripristino. Deve essere un tag del punto di controllo Microsoft. Vedere la sezione Osservazioni seguente.

ReparseDataLength

Dimensioni, in byte, dei dati di analisi nel buffer a cui punta DataBuffer .

Reserved

Lunghezza, in byte, della parte non analizzata del nome file a cui punta il membro FileName dell'oggetto file associato. Per altre informazioni sul membro FileName , vedere FILE_OBJECT<. Questo membro è valido solo per le operazioni di creazione quando l'I/O ha esito negativo con STATUS_REPARSE. Per tutti gli altri scopi, ad esempio l'impostazione o l'esecuzione di query su un punto reparse per i dati reparse, questo membro viene considerato riservato.

DUMMYUNIONNAME

DUMMYUNIONNAME.SymbolicLinkReparseBuffer

DUMMYUNIONNAME.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.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.SubstituteNameLength

Lunghezza, in byte, della stringa del nome sostitutivo. Se questa stringa è con terminazione NULL, SubstituteNameLength non include spazio per il carattere di terminazione UNICODE_NULL.

DUMMYUNIONNAME.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.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.PrintNameLength

Lunghezza, in byte, della stringa del nome di stampa. Se questa stringa è con terminazione NULL, PrintNameLength non include spazio per il carattere di terminazione UNICODE_NULL.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.Flags

Indica se il collegamento simbolico è assoluto o relativo. Se Flags contiene SYMLINK_FLAG_RELATIVE, il collegamento simbolico contenuto nella matrice PathBuffer (in corrispondenza dell'offset SubstituteNameOffset) viene elaborato come collegamento simbolico relativo; in caso contrario, viene elaborato come collegamento simbolico assoluto.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.PathBuffer[1]

Primo carattere della stringa di percorso. Questo carattere viene seguito in memoria dal resto della stringa. La stringa di percorso contiene la stringa del nome sostitutivo e la stringa del nome di stampa. Il nome sostitutivo e le stringhe del nome di stampa possono essere visualizzati in qualsiasi ordine in PathBuffer. Per individuare il nome sostitutivo e le stringhe dei nomi di stampa in PathBuffer, utilizzare i membri SubstituteNameOffset, SubstituteNameLength, PrintNameOffset e PrintNameLength .

DUMMYUNIONNAME.MountPointReparseBuffer

DUMMYUNIONNAME.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.

DUMMYUNIONNAME.MountPointReparseBuffer.SubstituteNameLength

Lunghezza, in byte, della stringa del nome sostitutivo. Se questa stringa è con terminazione NULL, SubstituteNameLength non include spazio per il carattere di terminazione UNICODE_NULL.

DUMMYUNIONNAME.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.

DUMMYUNIONNAME.MountPointReparseBuffer.PrintNameLength

Lunghezza, in byte, della stringa del nome di stampa. Se questa stringa è con terminazione NULL, PrintNameLength non include spazio per il carattere di terminazione UNICODE_NULL.

DUMMYUNIONNAME.MountPointReparseBuffer.PathBuffer[1]

Primo carattere della stringa di percorso. Questo carattere viene seguito in memoria dal resto della stringa. La stringa di percorso contiene la stringa del nome sostitutivo e la stringa del nome di stampa. Il nome sostitutivo e le stringhe del nome di stampa possono essere visualizzati in qualsiasi ordine in PathBuffer. Per individuare il nome sostitutivo e le stringhe dei nomi di stampa in PathBuffer, utilizzare i membri SubstituteNameOffset, SubstituteNameLength, PrintNameOffset e PrintNameLength .

DUMMYUNIONNAME.GenericReparseBuffer

DUMMYUNIONNAME.GenericReparseBuffer.DataBuffer[1]

Puntatore a un buffer contenente i dati definiti da Microsoft per il reparse point.

Commenti

La struttura REPARSE_DATA_BUFFER viene usata dai file system, dai filtri e dai driver minifilter microsoft, nonché dal gestore di I/O, per archiviare i dati per un punto di analisi.

Questa struttura può essere usata solo per i punti di analisi Microsoft. I proprietari di punti di ripristino di terze parti devono usare invece la struttura REPARSE_GUID_DATA_BUFFER .

Microsoft reparse points può usare la struttura REPARSE_DATA_BUFFER o la struttura REPARSE_GUID_DATA_BUFFER.

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

  • Utilizzare la struttura SymbolicLinkReparseBuffer quando FileTag è IO_REPARSE_TAG_SYMLINK.

  • Utilizzare la struttura MountPointReparseBuffer quando FileTag è IO_REPARSE_TAG_MOUNT_POINT.

Per altre informazioni sui tag di reparse point, vedere la documentazione di Microsoft Windows SDK.

Requisiti

Requisito Valore
Intestazione ntifs.h (include Ntifs.h, Fltkernel.h)

Vedi anche

FILE_OBJECT

FILE_REPARSE_POINT_INFORMATION

FLT_PARAMETERS per IRP_MJ_FILE_SYSTEM_CONTROL

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_SET_REPARSE_POINT

FltFsControlFile

FltTagFile

FltTagFileEx

FltUntagFile

IRP_MJ_FILE_SYSTEM_CONTROL

IsReparseTagMicrosoft

IsReparseTagNameSurrogate

REPARSE_DATA_BUFFER_EX

REPARSE_GUID_DATA_BUFFER

ZwFsControlFile