CreateDirectoryTransactedA 함수(winbase.h)
[Microsoft는 개발자가 애플리케이션의 요구 사항을 달성하기 위해 대체 수단을 활용하는 것이 좋습니다. TxF가 개발된 많은 시나리오는 더 간단하고 쉽게 사용할 수 있는 기술을 통해 달성할 수 있습니다. 또한 이후 버전의 Microsoft Windows에서는 TxF를 사용할 수 없습니다. 자세한 내용 및 TxF에 대한 대안은 트랜잭션 NTFS사용에 대한
지정된 템플릿 디렉터리의 특성을 사용하여 트랜잭션 작업으로 새 디렉터리를 만듭니다. 기본 파일 시스템에서 파일 및 디렉터리에 대한 보안을 지원하는 경우 함수는 지정된 보안 설명자를 새 디렉터리에 적용합니다. 새 디렉터리에는 지정된 템플릿 디렉터리의 다른 특성이 유지됩니다.
통사론
BOOL CreateDirectoryTransactedA(
[in, optional] LPCSTR lpTemplateDirectory,
[in] LPCSTR lpNewDirectory,
[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
[in] HANDLE hTransaction
);
매개 변수
[in, optional] lpTemplateDirectory
새 디렉터리를 만들 때 템플릿으로 사용할 디렉터리의 경로입니다. 이 매개 변수는 NULL
기본적으로 이름은 MAX_PATH 문자로 제한됩니다. 이 제한을 32,767자로 확장하려면 경로 앞에 "\\?\"를 추가합니다. 자세한 내용은 이름 지정 파일, 경로 및 네임스페이스참조하세요.
팁
Windows 10 버전 1607부터 "\\?\" 앞에 추가하지 않고 MAX_PATH 제한을 제거하도록 옵트인할 수 있습니다. 자세한 내용은 명명 파일, 경로 및 네임스페이스의 "최대 경로 길이 제한" 섹션을.
디렉터리가 로컬 컴퓨터에 있어야 합니다. 그렇지 않으면 함수가 실패하고 마지막 오류 코드가 ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.
[in] lpNewDirectory
만들 디렉터리의 경로입니다.
기본적으로 이름은 MAX_PATH 문자로 제한됩니다. 이 제한을 32,767자로 확장하려면 경로 앞에 "\\?\"를 추가합니다. 자세한 내용은 이름 지정 파일, 경로 및 네임스페이스참조하세요.
팁
Windows 10 버전 1607부터 "\\?\" 앞에 추가하지 않고 MAX_PATH 제한을 제거하도록 옵트인할 수 있습니다. 자세한 내용은 명명 파일, 경로 및 네임스페이스의 "최대 경로 길이 제한" 섹션을.
[in, optional] lpSecurityAttributes
SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다. 구조체의 lpSecurityDescriptor 멤버는 새 디렉터리에 대한 보안 설명자를 지정합니다.
대상 파일 시스템은 이 매개 변수가 적용되려면 파일 및 디렉터리에 대한 보안을 지원해야 합니다.
GetVolumeInformation
[in] hTransaction
트랜잭션에 대한 핸들입니다. 이 핸들은 CreateTransaction 함수에서 반환됩니다.
반환 값
함수가 성공하면 반환 값은 0이 아닌 값입니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다. 가능한 오류는 다음과 같습니다.
반환 코드 | 묘사 |
---|---|
|
지정된 디렉터리가 이미 있습니다. |
|
암호화를 사용하지 않도록 설정된 부모 디렉터리를 사용하여 자식 디렉터리를 만들 수 없습니다. |
|
하나 이상의 중간 디렉터리 존재하지 않습니다. 이 함수는 경로에 최종 디렉터리만 만듭니다. |
발언
CreateDirectoryTransacted 함수를 사용하면 다른 디렉터리에서 스트림 정보를 상속하는 디렉터리를 만들 수 있습니다. 이 함수는 예를 들어 디렉터리 콘텐츠를 특성으로 올바르게 식별하는 데 필요한 리소스 스트림이 있는 Macintosh 디렉터리를 사용하는 경우에 유용합니다.
NTFS 파일 시스템과 같은 일부 파일 시스템은 개별 파일 및 디렉터리에 대한 압축 또는 암호화를 지원합니다. 이러한 파일 시스템에 대한 형식이 지정된 볼륨에서 새 디렉터리가 부모 디렉터리의 압축 및 암호화 특성을 상속합니다.
암호화를 사용하지 않도록 설정된 부모 디렉터리를 사용하여 자식 디렉터리를 만들려고 하면 ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION 이 함수가 실패합니다.
FILE_FLAG_BACKUP_SEMANTICS 플래그 집합을 사용하여 CreateFileTransacted 함수를 호출하여 디렉터리에 대한 핸들을 가져올 수 있습니다.
Windows 8 및 Windows Server 2012에서 이 함수는 다음 기술에서 지원됩니다.
기술 | 지원 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | 아니요 |
SMB 3.0 TFO(투명한 장애 조치(failover) | 아니요 |
SO(스케일 아웃 파일 공유)가 있는 SMB 3.0 | 아니요 |
CsvFS(클러스터 공유 볼륨 파일 시스템) | 아니요 |
ReFS(복원 파일 시스템) | 아니요 |
SMB 3.0은 TxF를 지원하지 않습니다.
메모
winbase.h 헤더는 CREATEDirectoryTransacted를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |
참고 항목
createFileTransacted
RemoveDirectoryTransacted