기존 빈 디렉터리를 삭제합니다. lpPathName의 어떤 부분이 재구문 분석 지점 또는 기호 링크를 통해 리디렉션되면 이 함수는 실패합니다.
이 작업을 트랜잭션 작업으로 수행하려면 RemoveDirectoryTransacted 함수를 사용합니다.
문법
BOOL RemoveDirectory2W(
LPCWSTR lpPathName,
DIRECTORY_FLAGS DirectoryFlags
);
매개 변수
lpPathName
제거할 디렉터리의 경로입니다. 이 경로는 빈 디렉터리를 지정해야 하며 호출 프로세스에는 디렉터리에 대한 삭제 액세스 권한이 있어야 합니다.
기본적으로 이름은 MAX_PATH 문자로 제한됩니다. 이 제한을 32,767자로 확장하려면 경로 앞에 "\\?\"를 추가합니다. 자세한 내용은 이름 지정 파일, 경로 및 네임스페이스를 참조하세요.
팁 (조언)
"\\?\" 앞에 추가하지 않고 MAX_PATH 제한을 제거하도록 옵트인할 수 있습니다. 자세한 내용은 파일, 경로 및 네임스페이스의 "최대 경로 길이 제한" 섹션을 참조하세요.
DirectoryFlags
디렉터리를 삭제하는 방법을 지정하는 플래그입니다. 이 매개 변수는 다음 값의 조합일 수 있습니다.
가치 | 의미 |
---|---|
DIRECTORY_FLAGS_DISALLOW_PATH_REDIRECTS0x00000001 |
재문 분석 지점 또는 기호 링크로 lpPathName 이 리디렉션되지 않도록 합니다. |
반환 값
함수가 성공하면 반환 값은 0이 아닌 값입니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다.
비고
RemoveDirectory2 함수는 닫을 때 삭제할 디렉터리를 표시합니다. 따라서 디렉터리에 대한 마지막 핸들을 닫을 때까지 디렉터리가 제거되지 않습니다.
디렉터리에서 파일을 재귀적으로 삭제하려면 SHFileOperation 함수를 사용합니다.
RemoveDirectory2 를 사용하여 디렉터리 접합을 제거할 수 있습니다. 대상 디렉터리와 해당 콘텐츠는 정식 경로를 통해 계속 액세스할 수 있으므로 대상 디렉터리 자체는 대상 접합을 제거하여 영향을 받지 않습니다. 이러한 이유로 lpPathName 이 디렉터리 접합을 참조하는 경우 RemoveDirectory2 는 대상 디렉터리가 비어 있는지 여부에 관계없이 지정된 링크를 제거합니다. 접합에 대한 자세한 내용은 하드 링크 및 접합을 참조하세요.
POSIX 삭제를 사용하면 핸들이 열려 있는 동안 디렉터리가 삭제됩니다. 디렉터리를 열기 위해 CreateDirectory 또는 CreateDirectory2에 대한 후속 호출은 ERROR_FILE_NOT_FOUND 함께 실패합니다.
이 함수는 다음 기술에서 지원됩니다.
기술 | 지원됨 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | 예 |
SMB 3.0 TFO(투명한 장애 조치(failover) | 예 |
SO(스케일 아웃 파일 공유)가 있는 SMB 3.0 | 예 |
CsvFS(클러스터 공유 볼륨 파일 시스템) | 예 |
ReFS(복원 파일 시스템) | 예 |
비고
헤더는 fileapi.h
RemoveDirectory2 를 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입 대한규칙을 참조하세요.
요구 사항
요구 사항 | 가치 |
---|---|
지원되는 최소 클라이언트 | Windows 11 24H2 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2025 [데스크톱 앱 | UWP 앱] |
헤더 | fileapi.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |