原文链接 -> 传送门
函数功能:
CreateDirectoryEx 函数用于创建一个新目录,该目录带有一个指定的模板目录的属性。如果底层的文件系统支持文件和目录的安全性,那么该函数就将指定的安全描述符应用到新目录。该新目录保留指定的模板目录的其它属性。
调用 CreateDirectoryTransacted 函数,将这个操作作为一个事务处理操作来执行。
API 函数原型:
注释:_In_ 说明该参数是输入的,_opt_ 说明该参数是可选的。
BOOL WINAPI CreateDirectoryEx( _In_ LPCTSTR lpTemplateDirectory, _In_ LPCTSTR lpNewDirectory, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes );
参数解析:
|
参数 |
含义 |
|
lpTemplateDirectory |
1. 当创建一个新目录时,该参数用于指定被用作一个模板目录的路径 |
|
lpNewDirectory |
1. 该参数用于指定要被创建的目录的路径 |
|
lpSecurityAttributes |
1. 该参数表示一个指向 SECURITY_ATTRIBUTES 结构的指针。该结构中的 lpSecurityDescriptor 成员为新目录指定了一个安全描述符。如果 IpSecurityAttributes 成员为 NULL,那么该目录将得到一个默认的安全描述符。对于一个目录,在默认安全描述符中的访问控制列表(ACL)继承于它的父目录 |
返回值:
1. 如果该函数运行成功,返回值为非 0;
2. 如果该函数运行失败,返回值为 0。
想要得到更多的错误信息,请调用 GetLastError 函数。
可能的错误包括以下几个:
|
返回的代码 |
描述 |
|
ERROR_ALREADY_EXISTS |
该标识表明指定的目录已经存在 |
|
ERROR_PATH_NOT_FOUND |
该标识表明一个或更多的中间目录为不存在;该函数将只会创建路径中的最终目录。想要创建路径中的全部中间目录,可以调用 SHCreateDiredtoryEx 函数 |
备注:
1. CreateDirectoryEx 函数允许你去创建继承来自其它目录的流信息的目录。例如,当你正使用 Macintosh 的目录,其中有一个资源流被需要用来正确识别目录的内容作为一个属性时,该函数是有用的。
2. 像 NTFS 文件系统一样,一些文件系统支持对单个文件和目录的压缩或加密。对于这样的一个文件系统,在卷的格式化上,一个新的目录继承它的父目录的压缩和加密属性。
3. 一个应用能够通过调用带有 FILE_FLAG_BACKUP_SEMANTICS 标识集的 CreateFile 函数,获得一个目录句柄,代码示例,请参照 CreateFile 函数。
4. 支持查询该对象的安全描述符的继承功能,可以试探性地确定和报告继承是有效的。更多信息,请参照 Automatic Propagation of Inheritable ACEs。
5. 在 Windows 8 和 Windows Server 2012 中,该函数由以下技术支持:
|
技术 |
是否被支持 |
|
Server Message Block (SMB) 3.0 protocol |
是 |
|
SMB 3.0 Transparent Failover (TFO) |
是 |
|
SMB 3.0 with Scale-out File Shares (SO) |
是 |
|
Cluster Shared Volume File System (CsvFS) |
是 |
|
Resilient File System (ReFS) |
是 |
SMB 3.0 不支持TxF。
需求:
|
Minimum supported client |
Windows XP [桌面应用程序 | Windows 商店应用程序] |
|
Minimum supported server |
Windows 2003 服务器版 [桌面应用程序 | Windows 商店应用程序] |
|
Minimum supported phone |
Windows Phone 8 |
|
Header |
WinBase.h (包含于 Windows.h) |
|
Library |
Kernel32.lib |
|
DLL |
Kernel32.dll |
|
Unicode and ANSI names |
CreateDirectoryExW (Unicode) 和 CreateDirectoryExA (ANSI) |




