SetFileAttributesA 함수(fileapi.h)

파일 또는 디렉터리의 특성을 설정합니다.

이 작업을 트랜잭션 작업으로 수행하려면 SetFileAttributesTransacted 함수를 사용합니다.

통사론

BOOL SetFileAttributesA(
  [in] LPCSTR lpFileName,
  [in] DWORD  dwFileAttributes
);

매개 변수

[in] lpFileName

특성을 설정할 파일의 이름입니다.

기본적으로 이름은 MAX_PATH 문자로 제한됩니다. 이 제한을 32,767자로 확장하려면 경로 앞에 "\\?\"를 추가합니다. 자세한 내용은 이름 지정 파일, 경로 및 네임스페이스참조하세요.

팁

Windows 10 버전 1607부터 "\\?\" 앞에 추가하지 않고 MAX_PATH 제한을 제거하도록 옵트인할 수 있습니다. 자세한 내용은 명명 파일, 경로 및 네임스페이스의 "최대 경로 길이 제한" 섹션을.

[in] dwFileAttributes

파일에 대해 설정할 파일 특성입니다.

이 매개 변수는 비트 OR 연산자를 사용하여 결합된 하나 이상의 값일 수 있습니다. 그러나 다른 모든 값은 FILE_ATTRIBUTE_NORMAL재정의합니다.

이 함수에서 모든 특성이 지원되는 것은 아닙니다. 자세한 내용은 설명 섹션을 참조하세요.

다음은 지원되는 특성 값 목록입니다.

값 의미
FILE_ATTRIBUTE_ARCHIVE
32(0x20)
보관 파일 또는 디렉터리인 파일 또는 디렉터리입니다. 애플리케이션은 일반적으로 이 특성을 사용하여 백업 또는 제거를 위해 파일을 표시합니다.
FILE_ATTRIBUTE_HIDDEN
2(0x2)
파일 또는 디렉터리가 숨겨집니다. 일반 디렉터리 목록에는 포함되지 않습니다.
FILE_ATTRIBUTE_NORMAL
128(0x80)
다른 특성이 설정되지 않은 파일입니다. 이 특성은 단독으로 사용하는 경우에만 유효합니다.
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
8192 (0x2000)
파일 또는 디렉터리를 콘텐츠 인덱싱 서비스에서 인덱싱할 수 없습니다.
FILE_ATTRIBUTE_OFFLINE
4096(0x1000)
파일의 데이터는 즉시 사용할 수 없습니다. 이 특성은 파일 데이터가 오프라인 스토리지로 물리적으로 이동되었음을 나타냅니다. 이 특성은 계층적 스토리지 관리 소프트웨어인 Remote Storage에서 사용됩니다. 애플리케이션은 이 특성을 임의로 변경해서는 안 됩니다.
FILE_ATTRIBUTE_READONLY
1(0x1)
읽기 전용인 파일입니다. 애플리케이션은 파일을 읽을 수 있지만 파일을 쓰거나 삭제할 수는 없습니다. 이 특성은 디렉터리에서 적용되지 않습니다. 자세한 내용은 "Windows Server 2003, Windows XP 또는 Windows Vista에서 읽기 전용 또는 폴더의 시스템 특성을 보거나 변경할 수 없습니다.
FILE_ATTRIBUTE_SYSTEM
4(0x4)
운영 체제에서 일부 또는 단독으로 사용하는 파일 또는 디렉터리입니다.
FILE_ATTRIBUTE_TEMPORARY
256(0x100)
임시 스토리지에 사용되는 파일입니다. 일반적으로 애플리케이션은 핸들이 닫힌 후 임시 파일을 삭제하기 때문에 충분한 캐시 메모리를 사용할 수 있는 경우 파일 시스템은 대용량 스토리지에 데이터를 다시 쓰지 않습니다. 이 시나리오에서 시스템은 데이터 쓰기를 완전히 방지할 수 있습니다. 그렇지 않으면 핸들이 닫힌 후 데이터가 기록됩니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값입니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다.

발언

다음 표에서는 SetFileAttributes사용하여 설정할 수 없는 특성을 설정하는 방법을 설명합니다. 모든 파일 특성 값 및 해당 설명의 전체 목록은 파일 특성 상수참조하세요.

속성 설정하는 방법
FILE_ATTRIBUTE_COMPRESSED

0x800

파일의 압축 상태를 설정하려면 FSCTL_SET_COMPRESSION 작업과 함께 DeviceIoControl 함수를 사용합니다.
FILE_ATTRIBUTE_DEVICE

0x40

예약; 사용하지 마세요.
FILE_ATTRIBUTE_DIRECTORY

0x10

파일을 디렉터리로 변환할 수 없습니다. 디렉터리를 만들려면 CreateDirectory 사용하거나 CreateDirectoryEx 함수를 .
FILE_ATTRIBUTE_ENCRYPTED

0x4000

암호화된 파일을 만들려면 FILE_ATTRIBUTE_ENCRYPTED 특성과 함께 CreateFile 함수를 사용합니다. 기존 파일을 암호화된 파일로 변환하려면 EncryptFile 함수를 사용합니다.
FILE_ATTRIBUTE_REPARSE_POINT

0x400

재구문 지점을 파일 또는 디렉터리에 연결하려면 FSCTL_SET_REPARSE_POINT 작업과 DeviceIoControl 함수를 사용합니다.
FILE_ATTRIBUTE_SPARSE_FILE

0x200

파일의 스파스 특성을 설정하려면 FSCTL_SET_SPARSE 작업과 함께 DeviceIoControl 함수를 사용합니다.
 

트랜잭션 작업

트랜잭션에서 수정을 위해 파일이 열려 있는 경우 트랜잭션이 커밋될 때까지 다른 스레드는 수정을 위해 파일을 열 수 없습니다. 따라서 트랜잭션된 스레드가 먼저 파일을 열면 트랜잭션이 커밋되기 전에 파일을 수정하려고 하는 후속 스레드는 공유 위반을 받습니다. 트랜잭션되지 않은 스레드가 트랜잭션된 스레드가 실행되기 전에 파일을 수정하고 트랜잭션이 파일을 열려고 할 때 파일이 열려 있으면 트랜잭션은 오류 ERROR_TRANSACTIONAL_CONFLICT받습니다.

Windows 8 및 Windows Server 2012에서 이 함수는 다음 기술에서 지원됩니다.

기술 지원
SMB(서버 메시지 블록) 3.0 프로토콜 예
SMB 3.0 TFO(투명한 장애 조치(failover) 예
SO(스케일 아웃 파일 공유)가 있는 SMB 3.0 예
CsvFS(클러스터 공유 볼륨 파일 시스템) 예
ReFS(복원 파일 시스템) 예
 

예제

예를 들어 파일 특성 검색 및 변경참조하세요.

메모

fileapi.h 헤더는 SETFileAttributes를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구 값
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 fileapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

파일 특성 상수

파일 관리 함수

GetFileAttributes

setFileAttributesTransacted

기호 링크

트랜잭션 NTFS