FILE_LINK_INFORMATION estrutura (ntifs.h)

A estrutura FILE_LINK_INFORMATION é usada para criar um link rígido do NTFS para um arquivo existente.

Sintaxe

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;

Membros

DUMMYUNIONNAME

DUMMYUNIONNAME.ReplaceIfExists

Defina como TRUE para especificar que, se o link já existir, ele deverá ser substituído pelo novo link. Defina como FALSE se a operação de criação de link falhar se o link já existir.

DUMMYUNIONNAME.Flags

Sinalizadores para a operação de link. Esse campo só é aplicável quando usado com a classe de informações FileLinkInformationEx.

Estes são os valores possíveis:

Valor Significado
FILE_LINK_REPLACE_IF_EXISTS (0x00000001) Se já existir um arquivo com o nome fornecido, ele deverá ser substituído pelo novo link. Equivalente ao campo ReplaceIfExists usado com a classe de informações FileLinkInformation.
FILE_LINK_POSIX_SEMANTICS (0x00000002) Se FILE_LINK_REPLACE_IF_EXISTS também for especificado, permita substituir um arquivo mesmo que haja identificadores existentes nele. Os identificadores existentes para o arquivo substituído continuam a ser válidos para operações como leitura e gravação. Qualquer abertura subsequente do nome de destino abrirá o novo link, não o arquivo substituído.
FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE (0x00000008) Ao criar um link em um novo diretório, suprime todas as regras de herança relacionadas à propriedade de ID de reserva de armazenamento do arquivo.
FILE_LINK_NO_INCREASE_AVAILABLE_SPACE (0x00000010) Se FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE também não for especificado, ao criar um link em um novo diretório, redimensione automaticamente as áreas de reserva de armazenamento afetadas conforme necessário para impedir que o espaço livre visível do usuário no volume aumente. Requer o gerenciamento de acesso ao volume.
FILE_LINK_NO_DECREASE_AVAILABLE_SPACE (0x00000020) Se FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE também não for especificado, ao criar um link em um novo diretório, redimensione automaticamente as áreas de reserva de armazenamento afetadas, conforme necessário, para evitar que o espaço livre visível do usuário no volume dima. Requer o gerenciamento de acesso ao volume.
FILE_LINK_PRESERVE_AVAILABLE_SPACE (0x00000030) Equivalente a especificar FILE_LINK_NO_INCREASE_AVAILABLE_SPACE e FILE_LINK_NO_DECREASE_AVAILABLE_SPACE.
FILE_LINK_IGNORE_READONLY_ATTRIBUTE (0x00000040) Se FILE_LINK_REPLACE_IF_EXISTS também for especificado, permita substituir um arquivo mesmo que ele seja somente leitura. Requer WRITE_ATTRIBUTES acesso ao arquivo substituído.
FILE_LINK_FORCE_RESIZE_TARGET_SR (0x00000080) Se FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE também não for especificado, ao criar um link em um novo diretório que faça parte de uma área de reserva de armazenamento diferente, sempre aumente a área de reserva de armazenamento do diretório de destino pelo tamanho total do arquivo que está sendo vinculado. Requer o gerenciamento de acesso ao volume.
FILE_LINK_FORCE_RESIZE_SOURCE_SR (0x00000100) Se FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE também não for especificado, ao criar um link em um novo diretório que faça parte de uma área de reserva de armazenamento diferente, sempre reduza a área de reserva de armazenamento do diretório de origem pelo tamanho total do arquivo que está sendo vinculado. Requer o gerenciamento de acesso ao volume.
FILE_LINK_FORCE_RESIZE_SR (0x00000180) Equivalente a especificar FILE_LINK_FORCE_RESIZE_TARGET_SR e FILE_LINK_FORCE_RESIZE_SOURCE_SR.

ReplaceIfExists

RootDirectory

Se o link deve ser criado no mesmo diretório ao qual o arquivo que está sendo vinculado ou se o membro FileName contiver o nome de caminho completo para o link a ser criado, isso será NULL. Caso contrário, é um identificador para o diretório em que o link deve ser criado.

FileNameLength

Comprimento, em bytes, da cadeia de caracteres de nome do arquivo.

FileName[1]

O primeiro caractere do nome a ser atribuído ao link recém-criado. Isso é seguido na memória pelo restante da cadeia de caracteres. Se o membro RootDirectory for NULL e o link for criado em um diretório diferente do arquivo ao qual está sendo vinculado, esse membro especifica o nome completo do caminho para o link a ser criado. Caso contrário, ele especifica apenas o nome do arquivo. (Consulte a seção Comentários de ZwQueryInformationFile para obter detalhes sobre a sintaxe desta cadeia de caracteres de nome de arquivo.)

Comentários

A estrutura FILE_LINK_INFORMATION é usada para criar um link rígido do NTFS para um arquivo existente. Essa operação pode ser executada de qualquer uma das seguintes maneiras:

  • Chame FltSetInformationFile ou ZwSetInformationFile, passando FileLinkInformation como o valor de FileInformationClass e passando um buffer alocado por chamador FILE_LINK_INFORMATION estruturado como o valor de FileInformation. O parâmetro FileHandle especifica o arquivo existente ao qual o link rígido deve apontar.

  • Crie um IRP com o código de função principal IRP_MJ_SET_INFORMATION.

Nenhum direito de acesso específico é necessário para definir essas informações.

Os minifiltros do sistema de arquivos devem usar FltSetInformationFile, não ZwSetInformationFile, para definir essas informações para um arquivo.

Para obter mais informações sobre links rígidos do NTFS, consulte a documentação SDK do Microsoft Windows para a função Win32 CreateHardLink.

O tamanho do buffer FileInformation passado para FltSetInformationFile ou ZwSetInformationFile deve ser pelo menos sizeof(FILE_LINK_INFORMATION).

Essa estrutura deve estar alinhada em um limite LONG (4 bytes).

Requisitos

   
Cabeçalho ntifs.h (include Ntifs.h, Fltkernel.h)

Confira também

FltSetInformationFile

IRP_MJ_SET_INFORMATION

ZwQueryInformationFile

ZwSetInformationFile