estructura FLT_TAG_DATA_BUFFER (fltkernel.h)

La estructura FLT_TAG_DATA_BUFFER contiene información sobre una etiqueta de punto de reanálisis.

Sintaxis

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;

Miembros

FileTag

Etiqueta que identifica de forma única el punto de reanálisis. Puede ser uno de los valores definidos por Microsoft IO_REPARSE_TAG_XXX definidos en ntifs.h o un valor definido por ISV.

TagDataLength

Tamaño, en bytes, de los datos de reanálisis a los que apunta el miembro DataBuffer .

UnparsedNameLength

Longitud, en bytes, de la parte no analizada del nombre de archivo al que apunta el miembro FileName del objeto de archivo asociado. Para obtener más información sobre el miembro FileName , vea FILE_OBJECT.

SymbolicLinkReparseBuffer

Cuando FileTag es IO_REPARSE_TAG_SYMLINK, puede usar esta estructura para interpretar la carga útil.

SymbolicLinkReparseBuffer.SubstituteNameOffset

Desplazamiento, en bytes, de la cadena de nombre de sustituto en la matriz PathBuffer . Tenga en cuenta que este desplazamiento debe dividirse por sizeof(WCHAR) para obtener el índice de matriz.

SymbolicLinkReparseBuffer.SubstituteNameLength

Longitud, en bytes, de la cadena de nombre sustituto. Si esta cadena es NULL_terminated, SubstituteNameLength no incluye espacio para el terminador de UNICODE_NULL.

SymbolicLinkReparseBuffer.PrintNameOffset

Desplazamiento, en bytes, de la cadena de nombre de impresión en la matriz PathBuffer . Tenga en cuenta que este desplazamiento debe dividirse por sizeof(WCHAR) para obtener el índice de matriz.

SymbolicLinkReparseBuffer.PrintNameLength

Longitud, en bytes, de la cadena de nombre de impresión. Si esta cadena es NULL_terminated, PrintNameLength no incluye espacio para el terminador de UNICODE_NULL.

SymbolicLinkReparseBuffer.Flags

Indica si el vínculo simbólico es absoluto o relativo. Si Flags contiene SYMLINK_FLAG_RELATIVE, el vínculo simbólico contenido en PathBuffer (en offset SubstituteNameOffset) se procesa como un vínculo relativo; de lo contrario, se procesa como un vínculo absoluto.

SymbolicLinkReparseBuffer.PathBuffer[1]

Primer carácter de la cadena de ruta de acceso. Este carácter va seguido de la memoria por el resto de la cadena. La cadena de ruta de acceso contiene la cadena de nombre sustituto y la cadena de nombre de impresión. El nombre sustituto y las cadenas de nombre de impresión pueden aparecer en cualquier orden en pathBuffer. Para buscar el nombre sustituto y las cadenas de nombre de impresión en pathBuffer, use los miembros SubstituteNameOffset, SubstituteNameLength, PrintNameOffset y PrintNameLength .

MountPointReparseBuffer

Cuando FileTag es IO_REPARSE_TAG_MOUNT_POINT, puede usar esta estructura para interpretar la carga útil.

MountPointReparseBuffer.SubstituteNameOffset

Desplazamiento, en bytes, de la cadena de nombre de sustituto en la matriz PathBuffer . Tenga en cuenta que este desplazamiento debe dividirse por sizeof(WCHAR) para obtener el índice de matriz.

MountPointReparseBuffer.SubstituteNameLength

Longitud, en bytes, de la cadena de nombre sustituto. Si esta cadena es NULL_terminated, SubstituteNameLength no incluye espacio para el terminador de UNICODE_NULL.

MountPointReparseBuffer.PrintNameOffset

Desplazamiento, en bytes, de la cadena de nombre de impresión en la matriz PathBuffer . Tenga en cuenta que este desplazamiento debe dividirse por sizeof(WCHAR) para obtener el índice de matriz.

MountPointReparseBuffer.PrintNameLength

Longitud, en bytes, de la cadena de nombre de impresión. Si esta cadena es NULL_terminated, PrintNameLength no incluye espacio para el terminador de UNICODE_NULL.

MountPointReparseBuffer.PathBuffer[1]

Primer carácter de la cadena de ruta de acceso. Este carácter va seguido de la memoria por el resto de la cadena. La cadena de ruta de acceso contiene la cadena de nombre sustituto y la cadena de nombre de impresión. El nombre sustituto y las cadenas de nombre de impresión pueden aparecer en cualquier orden en pathBuffer. Para buscar el nombre sustituto y las cadenas de nombre de impresión en pathBuffer, use los miembros SubstituteNameOffset, SubstituteNameLength, PrintNameOffset y PrintNameLength .

GenericReparseBuffer

Puede usar esta estructura para interpretar la carga de cualquier etiqueta IO_REPARSE_TAG_XXX definida por Microsoft.

GenericReparseBuffer.DataBuffer[1]

Puntero a un búfer que contiene datos definidos por el usuario para el punto de reanálisis.

GenericGUIDReparseBuffer

Puede usar esta estructura para interpretar la carga útil de cualquier etiqueta IO_REPARSE_TAG_XXX .

GenericGUIDReparseBuffer.TagGuid

Identificador único global (GUID) que identifica el tipo de punto de reanálisis. Si FileTag no es una etiqueta de Microsoft, este miembro no puede ser NULL.

GenericGUIDReparseBuffer.DataBuffer[1]

Puntero a un búfer que contiene datos definidos por el usuario para el punto de reanálisis.

Comentarios

Un minifiltro puede usar la estructura FLT_TAG_DATA_BUFFER para almacenar información sobre una etiqueta de punto de reanálisis.

Desde la unión, puede usar la estructura GenericGUIDReparseBuffer para interpretar la carga de cualquier etiqueta IO_REPARSE_TAG_XXX o, opcionalmente, usar una de las otras estructuras dentro de la unión de la siguiente manera:

  • Use la estructura GenericReparseBuffer para cualquier etiqueta IO_REPARSE_TAG_XXX definida por Microsoft.

  • Use la estructura SymbolicLinkReparseBuffer cuando FileTag se IO_REPARSE_TAG_SYMLINK.

  • Use la estructura MountPointReparseBuffer cuando FileTag se IO_REPARSE_TAG_MOUNT_POINT.

Un puntero a una estructura de FLT_TAG_DATA_BUFFER que contiene datos de etiqueta de punto de reanálisis para una operación se almacena en el miembro TagData de la estructura FLT_CALLBACK_DATA para la operación.

La macro FLT_TAG_DATA_BUFFER_HEADER_SIZE devuelve el tamaño de la parte fija de la estructura FLT_TAG_DATA_BUFFER.

Requisitos

Requisito Valor
Header fltkernel.h (incluya FltKernel.h)

Consulte también

FILE_OBJECT

FLT_CALLBACK_DATA

FltTagFile

FltTagFileEx

FltUntagFile