DeleteFileTransactedA 함수(winbase.h)

[Microsoft는 개발자가 애플리케이션의 요구 사항을 달성하기 위해 대체 수단을 활용하는 것이 좋습니다. TxF가 개발된 많은 시나리오는 더 간단하고 쉽게 사용할 수 있는 기술을 통해 달성할 수 있습니다. 또한 이후 버전의 Microsoft Windows에서는 TxF를 사용하지 못할 수도 있습니다. TxF에 대한 자세한 내용과 대안은 트랜잭션 NTFS 사용에 대한 대안을 참조하세요.]

트랜잭션 작업으로 기존 파일을 삭제합니다.

구문

BOOL DeleteFileTransactedA(
  [in] LPCSTR lpFileName,
  [in] HANDLE hTransaction
);

매개 변수

[in] lpFileName

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

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

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

파일은 로컬 컴퓨터에 있어야 합니다. 그렇지 않으면 함수가 실패하고 마지막 오류 코드가 ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE 설정됩니다.

[in] hTransaction

트랜잭션에 대한 핸들입니다. 이 핸들은 CreateTransaction 함수에서 반환됩니다.

반환 값

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

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

설명

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

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

  • 읽기 전용 파일을 삭제하려면 먼저 읽기 전용 특성을 제거해야 합니다.
  • 파일을 삭제하거나 이름을 바꾸려면 파일에 대한 삭제 권한이 있거나 부모 디렉터리에서 자식 권한을 삭제해야 합니다.
  • 디렉터리에서 파일을 재귀적으로 삭제하려면 SHFileOperation 함수를 사용합니다.
  • 빈 디렉터리를 제거하려면 RemoveDirectoryTransacted 함수를 사용합니다.
  • 열려 있는 파일을 닫려면 CloseHandle 함수를 사용합니다.
자식 삭제 및 삭제를 제외한 모든 액세스 권한이 있는 디렉터리를 설정하고 새 파일의 ACL(액세스 제어 목록)이 상속되는 경우 파일을 삭제하지 않고도 만들 수 있습니다. 그러나 파일을 만든 다음, 파일을 만들 때 반환되는 핸들에서 요청하는 모든 액세스 권한을 가져올 수 있습니다.

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

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

DeleteFileTransacted 함수는 닫을 때 삭제할 파일을 표시합니다. 트랜잭션이 여전히 활성 상태인 경우 파일에 대한 마지막 트랜잭션 기록기 핸들이 닫힌 후 파일이 삭제됩니다. 파일이 삭제로 표시되고 트랜잭션이 완료된 후에도 트랜잭션된 기록기 핸들이 계속 열려 있으면 파일이 삭제되지 않습니다.

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

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

기술 지원됨
SMB(서버 메시지 블록) 3.0 프로토콜 No
SMB 3.0 TFO(투명 장애 조치(failover)) No
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 No
CsvFS(클러스터 공유 볼륨 파일 시스템) No
ReFS(Resilient File System) No
 

SMB 3.0은 TxF를 지원하지 않습니다.

참고

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CloseHandle

CreateFileTransacted

파일 관리 함수

바로 가기 링크

트랜잭션 NTFS