Condividi tramite


struttura REPARSE_DATA_BUFFER (ntifs.h)

La struttura REPARSE_DATA_BUFFER contiene i dati dei punti di analisi per un punto di riferimento Microsoft. È invece possibile usare REPARSE_DATA_BUFFER_EX. I proprietari di punti di ripristino 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;

Membri

ReparseTag

Tag del punto di ripristino. Deve essere un tag punto di riferimento Microsoft. Vedere la sezione osservazioni seguente.

ReparseDataLength

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

Reserved

Lunghezza, in byte, della parte non analizzata del nome file a cui punta il FileName membro 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 Flag 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 è seguito in memoria dal resto della stringa. La stringa del percorso contiene la stringa del nome sostitutivo e la stringa del nome di stampa. I nomi sostitutivi e le stringhe del nome di stampa possono essere visualizzati in qualsiasi ordine nel PathBuffer. Per individuare i nomi sostitutivi e le stringhe dei nomi di stampa nel PathBuffer, utilizzare i membriSubstituteNameOffsetOffset , SubstituteNameLength, PrintNameOffsete 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 è seguito in memoria dal resto della stringa. La stringa del percorso contiene la stringa del nome sostitutivo e la stringa del nome di stampa. I nomi sostitutivi e le stringhe del nome di stampa possono essere visualizzati in qualsiasi ordine nel PathBuffer. Per individuare i nomi sostitutivi e le stringhe dei nomi di stampa nel PathBuffer, utilizzare i membriSubstituteNameOffsetOffset , SubstituteNameLength, PrintNameOffsete PrintNameLength.

DUMMYUNIONNAME.GenericReparseBuffer

DUMMYUNIONNAME.GenericReparseBuffer.DataBuffer[1]

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

Osservazioni

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

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

I reparse points Microsoft possono 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:

  • Usare 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 dei punti di analisi, vedere la documentazione di Microsoft Windows SDK.

Fabbisogno

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

Vedere 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