FILE_LINK_INFORMATION 구조체(ntifs.h)

FILE_LINK_INFORMATION 구조체는 기존 파일에 대한 NTFS 하드 링크를 만드는 데 사용됩니다.

구문

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;

멤버

DUMMYUNIONNAME

DUMMYUNIONNAME.ReplaceIfExists

링크가 이미 있는 경우 새 링크로 바꿔야 하므로 TRUE로 설정합니다. 링크가 이미 있는 경우 링크 만들기 작업이 실패하면 FALSE로 설정합니다. Windows 10, 버전 1809 사용하여 사용할 수 있습니다.

DUMMYUNIONNAME.Flags

링크 작업에 대한 플래그입니다. 이 필드는 FileLinkInformationEx 정보 클래스와 함께 사용할 때만 적용됩니다. Windows 10, 버전 1809 사용하여 사용할 수 있습니다.

가능한 값은 다음과 같습니다.

의미
FILE_LINK_REPLACE_IF_EXISTS (0x00000001) 지정된 이름의 파일이 이미 있는 경우 새 링크로 바꿔야 합니다. FileLinkInformation 정보 클래스와 함께 사용되는 ReplaceIfExists 필드에 해당합니다.
FILE_LINK_POSIX_SEMANTICS (0x00000002) FILE_LINK_REPLACE_IF_EXISTS 지정한 경우 기존 핸들이 있더라도 파일을 바꿀 수 있습니다. 대체된 파일에 대한 기존 핸들은 읽기 및 쓰기와 같은 작업에 계속 유효합니다. 이후에 대상 이름이 열리면 대체된 파일이 아닌 새 링크가 열립니다.
FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE (0x00000008) 새 디렉터리에 링크를 만들 때 파일의 스토리지 예약 ID 속성과 관련된 상속 규칙을 표시하지 않습니다.
FILE_LINK_NO_INCREASE_AVAILABLE_SPACE (0x00000010) FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE 지정하지 않은 경우 새 디렉터리에 링크를 만들 때 필요에 따라 영향을 받는 스토리지 예약 영역의 크기를 자동으로 조정하여 볼륨에서 사용자가 볼 수 있는 여유 공간이 증가하지 않도록 합니다. 볼륨 액세스를 관리해야 합니다.
FILE_LINK_NO_DECREASE_AVAILABLE_SPACE (0x00000020) FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE 지정하지 않은 경우 새 디렉터리에 링크를 만들 때 필요에 따라 영향을 받는 스토리지 예약 영역의 크기를 자동으로 조정하여 볼륨에서 사용자가 볼 수 있는 여유 공간이 감소하지 않도록 합니다. 볼륨 액세스를 관리해야 합니다.
FILE_LINK_PRESERVE_AVAILABLE_SPACE (0x00000030) FILE_LINK_NO_INCREASE_AVAILABLE_SPACE 및 FILE_LINK_NO_DECREASE_AVAILABLE_SPACE 모두 지정하는 것과 같습니다.
FILE_LINK_IGNORE_READONLY_ATTRIBUTE (0x00000040) FILE_LINK_REPLACE_IF_EXISTS 지정한 경우 읽기 전용인 경우에도 파일을 바꿀 수 있습니다. 대체된 파일에 대한 WRITE_ATTRIBUTES 액세스 권한이 필요합니다.
FILE_LINK_FORCE_RESIZE_TARGET_SR (0x00000080) FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE 지정하지 않은 경우 다른 스토리지 예약 영역의 일부인 새 디렉터리에 링크를 만들 때 항상 대상 디렉터리의 스토리지 예약 영역을 연결된 파일의 전체 크기로 확장합니다. 볼륨 액세스를 관리해야 합니다.
FILE_LINK_FORCE_RESIZE_SOURCE_SR (0x00000100) FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE 지정하지 않은 경우 다른 스토리지 예약 영역의 일부인 새 디렉터리에 링크를 만들 때 항상 원본 디렉터리의 스토리지 예약 영역을 연결된 파일의 전체 크기로 축소합니다. 볼륨 액세스를 관리해야 합니다.
FILE_LINK_FORCE_RESIZE_SR (0x00000180) FILE_LINK_FORCE_RESIZE_TARGET_SR 및 FILE_LINK_FORCE_RESIZE_SOURCE_SR 모두 지정하는 것과 같습니다.

ReplaceIfExists

링크가 이미 있는 경우 새 링크로 바꿔야 하므로 TRUE로 설정합니다. 링크가 이미 있는 경우 링크 만들기 작업이 실패하면 FALSE로 설정합니다.

RootDirectory

링크가 연결된 파일과 동일한 디렉터리에 만들거나 FileName 멤버에 만들 링크의 전체 경로 이름이 포함된 경우 NULL입니다. 그렇지 않으면 링크를 만들 디렉터리에 대한 핸들입니다.

FileNameLength

파일 이름 문자열의 길이(바이트)입니다.

FileName[1]

새로 만든 링크에 할당할 이름의 첫 번째 문자입니다. 이 뒤에는 나머지 문자열이 메모리에서 수행됩니다. RootDirectory 멤버가 NULL이고 링크가 연결된 파일과 다른 디렉터리에 만들어지는 경우 이 멤버는 만들 링크의 전체 경로 이름을 지정합니다. 그렇지 않으면 파일 이름만 지정합니다. (이 파일 이름 문자열의 구문에 대한 자세한 내용은 ZwQueryInformationFile 에 대한 설명 섹션을 참조하세요.)

설명

FILE_LINK_INFORMATION 구조체는 기존 파일에 대한 NTFS 하드 링크를 만드는 데 사용됩니다. 이 작업은 다음 방법 중 하나로 수행할 수 있습니다.

  • FltSetInformationFile 또는 ZwSetInformationFile을 호출하여 FileLinkInformation을 FileInformationClass 값으로 전달하고 호출자가 할당한 FILE_LINK_INFORMATION 구조화된 버퍼를 FileInformation 값으로 전달합니다. FileHandle 매개 변수는 하드 링크가 가리킬 기존 파일을 지정합니다.

  • 주 함수 코드 IRP_MJ_SET_INFORMATION 사용하여 IRP를 만듭니다.

이 정보를 설정하기 위해 특정 액세스 권한이 필요하지 않습니다.

파일 시스템 미니필터는 ZwSetInformationFile이 아닌 FltSetInformationFile을 사용하여 파일에 대해 이 정보를 설정해야 합니다.

NTFS 하드 링크에 대한 자세한 내용은 Win32 CreateHardLink 함수에 대한 Microsoft Windows SDK 설명서를 참조하세요.

FltSetInformationFile 또는 ZwSetInformationFile에 전달된 FileInformation 버퍼의 크기는 sizeof(FILE_LINK_INFORMATION) 이상이어야 합니다.

이 구조체는 LONG(4 바이트) 경계에 맞춰야 합니다.

요구 사항

요구 사항
헤더 ntifs.h(Ntifs.h, Fltkernel.h 포함)

추가 정보

FltSetInformationFile

IRP_MJ_SET_INFORMATION

ZwQueryInformationFile

ZwSetInformationFile