Compartir a través de


estructura FILE_LINK_INFORMATION (ntifs.h)

La estructura FILE_LINK_INFORMATION se usa para crear un vínculo físico NTFS a un archivo existente.

Sintaxis

typedef struct _FILE_LINK_INFORMATION {
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS5)
    union {
        BOOLEAN ReplaceIfExists;  // FileLinkInformation
        ULONG Flags;              // FileLinkInformationEx
    } DUMMYUNIONNAME;
#else
    BOOLEAN ReplaceIfExists;
#endif
    HANDLE RootDirectory;
    ULONG FileNameLength;
    WCHAR FileName[1];
} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;

Miembros

DUMMYUNIONNAME

DUMMYUNIONNAME.ReplaceIfExists

Establezca en TRUE para especificar que si el vínculo ya existe, se debe reemplazar por el nuevo vínculo. Se establece en FALSE si se produce un error en la operación de creación de vínculos si el vínculo ya existe. Disponible a partir de Windows 10, versión 1809.

DUMMYUNIONNAME.Flags

Marcas para la operación de vínculo. Este campo solo es aplicable cuando se usa con la clase de información FileLinkInformationEx. Disponible a partir de Windows 10, versión 1809.

Estos son los valores posibles:

Valor Significado
FILE_LINK_REPLACE_IF_EXISTS (0x00000001) Si ya existe un archivo con el nombre especificado, debe reemplazarse por el nuevo vínculo. Equivalente al campo ReplaceIfExists usado con la clase de información FileLinkInformation.
FILE_LINK_POSIX_SEMANTICS (0x00000002) Si también se especifica FILE_LINK_REPLACE_IF_EXISTS, permita reemplazar un archivo aunque haya identificadores existentes en él. Los identificadores existentes en el archivo reemplazado siguen siendo válidos para operaciones como lectura y escritura. Cualquier apertura posterior del nombre de destino abrirá el nuevo vínculo, no el archivo reemplazado.
FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE (0x00000008) Al crear un vínculo en un directorio nuevo, suprima las reglas de herencia relacionadas con la propiedad id. de reserva de almacenamiento del archivo.
FILE_LINK_NO_INCREASE_AVAILABLE_SPACE (0x00000010) Si no se especifica también FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE, al crear un vínculo en un directorio nuevo, cambie automáticamente el tamaño de las áreas de reserva de almacenamiento afectadas según sea necesario para evitar que el usuario pueda ver espacio libre en el volumen. Requiere administrar el acceso al volumen.
FILE_LINK_NO_DECREASE_AVAILABLE_SPACE (0x00000020) Si no se especifica también FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE, al crear un vínculo en un directorio nuevo, cambie automáticamente el tamaño de las áreas de reserva de almacenamiento afectadas según sea necesario para evitar que el usuario vea espacio libre en el volumen disminuya. Requiere administrar el acceso al volumen.
FILE_LINK_PRESERVE_AVAILABLE_SPACE (0x00000030) Equivalente a especificar FILE_LINK_NO_INCREASE_AVAILABLE_SPACE y FILE_LINK_NO_DECREASE_AVAILABLE_SPACE.
FILE_LINK_IGNORE_READONLY_ATTRIBUTE (0x00000040) Si también se especifica FILE_LINK_REPLACE_IF_EXISTS, permita reemplazar un archivo aunque sea de solo lectura. Requiere WRITE_ATTRIBUTES acceso al archivo reemplazado.
FILE_LINK_FORCE_RESIZE_TARGET_SR (0x00000080) Si no se especifica también FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE, al crear un vínculo en un directorio nuevo que forme parte de un área de reserva de almacenamiento diferente, aumente siempre el área de reserva de almacenamiento del directorio de destino por el tamaño completo del archivo que se va a vincular. Requiere administrar el acceso al volumen.
FILE_LINK_FORCE_RESIZE_SOURCE_SR (0x00000100) Si no se especifica también FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE, al crear un vínculo en un directorio nuevo que forme parte de un área de reserva de almacenamiento diferente, reduzca siempre el área de reserva de almacenamiento del directorio de origen por el tamaño completo del archivo que se va a vincular. Requiere administrar el acceso al volumen.
FILE_LINK_FORCE_RESIZE_SR (0x00000180) Equivalente a especificar FILE_LINK_FORCE_RESIZE_TARGET_SR y FILE_LINK_FORCE_RESIZE_SOURCE_SR.

ReplaceIfExists

Establezca en TRUE para especificar que si el vínculo ya existe, se debe reemplazar por el nuevo vínculo. Se establece en FALSE si se produce un error en la operación de creación de vínculos si el vínculo ya existe.

RootDirectory

Si el vínculo se va a crear en el mismo directorio que el archivo al que se va a vincular, o si el miembro FileName contiene el nombre de ruta de acceso completo para el vínculo que se va a crear, es NULL. De lo contrario, es un identificador para el directorio donde se va a crear el vínculo.

FileNameLength

Longitud, en bytes, de la cadena de nombre de archivo.

FileName[1]

Primer carácter del nombre que se va a asignar al vínculo recién creado. Esto va seguido de la memoria por el resto de la cadena. Si el miembro RootDirectory es NULL y el vínculo se va a crear en un directorio diferente del archivo al que se va a vincular, este miembro especifica el nombre de ruta de acceso completo para el vínculo al que se va a crear. De lo contrario, especifica solo el nombre de archivo. (Vea la sección Comentarios de ZwQueryInformationFile para obtener más información sobre la sintaxis de esta cadena de nombre de archivo).

Comentarios

La estructura FILE_LINK_INFORMATION se usa para crear un vínculo físico NTFS a un archivo existente. Esta operación se puede realizar de cualquiera de las siguientes maneras:

  • Llame a FltSetInformationFile o ZwSetInformationFile, pasando FileLinkInformation como el valor de FileInformationClass y pasando un búfer asignado por el autor de la llamada, FILE_LINK_INFORMATION estructurado como el valor de FileInformation. El parámetro FileHandle especifica el archivo existente al que debe apuntar el vínculo físico.

  • Cree un IRP con IRP_MJ_SET_INFORMATION de código de función principal.

No se requieren derechos de acceso específicos para establecer esta información.

Los minifiltros del sistema de archivos deben usar FltSetInformationFile, no ZwSetInformationFile, para establecer esta información para un archivo.

Para obtener más información sobre los vínculos físicos NTFS, consulte la documentación de Microsoft Windows SDK de la función CreateHardLink de Win32.

El tamaño del búfer FileInformation pasado a FltSetInformationFile o ZwSetInformationFile debe tener al menos sizeof(FILE_LINK_INFORMATION).

Esta estructura debe alinearse en un límite long (4 bytes).

Requisitos

Requisito Valor
Header ntifs.h (incluya Ntifs.h, Fltkernel.h)

Consulte también

FltSetInformationFile

IRP_MJ_SET_INFORMATION

ZwQueryInformationFile

ZwSetInformationFile