다음을 통해 공유


DeleteFile2A 함수(fileapi.h)

기존 파일을 삭제합니다. lpFileName의 일부가 재구문 지점 또는 기호 링크를 통해 리디렉션되는 경우 이 함수는 실패합니다.

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

문법

BOOL DeleteFile2A(
  LPCSTR lpFileName,
  DWORD  Flags
);

매개 변수

lpFileName

삭제할 파일의 이름입니다.

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

팁 (조언)

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

Flags

삭제되는 파일을 처리하는 방법을 지정하는 플래그입니다. 이 매개 변수는 다음 값 중 하나의 조합일 수 있습니다.

가치 의미
FILE_FLAG_DISALLOW_PATH_REDIRECTS
0x00010000
재문 분석 지점 또는 기호 링크로 lpFileName 이 리디렉션되지 않도록 방지합니다.

반환 값

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

함수가 실패하면 반환 값은 0(0)입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다. 가능한 오류는 다음과 같습니다.

반환 코드 설명
ERROR_PATH_REDIRECTED lpFileName 은 재문 분석 지점 및/또는 기호 링크에 의해 리디렉션되었습니다.

비고

애플리케이션이 존재하지 않는 파일을 삭제하려고 하면 ERROR_FILE_NOT_FOUND DeleteFile2 함수가 실패합니다. 파일이 읽기 전용 파일인 경우 함수는 ERROR_ACCESS_DENIED 함께 실패합니다.

다음 목록에서는 파일을 삭제, 제거 또는 닫기 위한 몇 가지 팁을 식별합니다.

  • 읽기 전용 파일을 삭제하려면 먼저 읽기 전용 특성을 제거해야 합니다.
  • 파일을 삭제하거나 이름을 바꾸려면 파일에 대한 삭제 권한이 있거나 부모 디렉터리에서 자식 권한을 삭제해야 합니다.
  • 디렉터리에서 파일을 재귀적으로 삭제하려면 SHFileOperation 함수를 사용합니다.
  • 빈 디렉터리를 제거하려면 RemoveDirectory 함수를 사용합니다.
  • 열려 있는 파일을 닫려면 CloseHandle 함수를 사용합니다.

자식 삭제 및 삭제를 제외한 모든 액세스 권한이 있는 디렉터리를 설정하고 새 파일의 ACL(액세스 제어 목록)을 상속하는 경우 파일을 삭제하지 않고도 만들 수 있습니다. 그러나 파일을 만든 다음, 파일을 만들 때 반환되는 핸들에 대해 요청하는 모든 액세스 권한을 가져올 수 있습니다.

파일을 만들 때 삭제 권한을 요청하는 경우 해당 핸들을 사용하여 파일을 삭제하거나 이름을 바꿀 수 있지만 다른 핸들은 사용하지 않을 수 있습니다. 자세한 내용은 파일 보안 및 액세스 권한을 참조하세요.

애플리케이션이 일반 I/O 또는 메모리 매핑된 파일로 열려 있는 다른 핸들이 있는 파일을 삭제하려고 하면 DeleteFile2 함수가 실패합니다(다른 핸들을 열 때 FILE_SHARE_DELETE 지정해야 합니다).

DeleteFile2 함수는 닫을 때 삭제할 파일을 표시합니다. 따라서 파일의 마지막 핸들을 닫을 때까지 파일 삭제가 발생하지 않습니다. 파일을 열기 위해 CreateFile, CreateFile2 또는 CreateFile3 에 대한 후속 호출은 ERROR_ACCESS_DENIED 함께 실패합니다.

POSIX 삭제를 사용하면 핸들이 열려 있는 동안 파일이 삭제됩니다. 파일을 열기 위해 CreateFile 에 대한 후속 호출은 ERROR_FILE_NOT_FOUND 함께 실패합니다.

경로가 기호 링크를 가리키는 경우 기호 링크는 대상이 아니라 삭제됩니다. 대상을 삭제하려면 CreateFile 을 호출하고 FILE_FLAG_DELETE_ON_CLOSE 지정해야 합니다.

이 함수는 다음 기술에서 지원됩니다.

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

비고

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

예시

예를 들어 파일에서 바이트 범위 잠금 및 잠금 해제를 참조하세요.

요구 사항

요구 사항 가치
지원되는 최소 클라이언트 Windows 11 24H2 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2025 [데스크톱 앱 | UWP 앱]
헤더 fileapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고하십시오

CreateDirectory2

CreateFile3

RemoveDirectory2