_getdcwd、_wgetdcwd
在指定的驱动器上获取当前工作目录的完整路径。
重要
此 API 不能用于在 Windows 运行时中执行的应用程序。有关详细信息,请参见 CRT functions not supported with /ZW(CRT 函数不支持使用/ZW)。
char *_getdcwd(
int drive,
char *buffer,
int maxlen
);
wchar_t *_wgetdcwd(
int drive,
wchar_t *buffer,
int maxlen
);
参数
drive
指定该驱动程序的非负整数 (0 = 默认驱动程序,1 =A ,2=B,等等)。如果指定的驱动程序不可用,或该驱动程序 (例如,可移动,修复,CD-ROM、RAM 磁盘或网络驱动器上) 无法确定的,参数无效处理程序,在 参数验证中介绍,将被调用。
buffer
路径的存储位置。或者NULL。如果 NULL被指定,使用 malloc,此函数至少分配 maxlen 大小缓冲区,并且,_getdcwd 的返回值是指向分配的缓冲区。 缓冲区可通过调用 free释放并向其传递指针。
maxlen
指定路径的最大长度的非零的正整数,在字符:_getdcwd的char和_wgetdcwd的wchar_t如果 maxlen 不大于零,无效参数处理程序,在 参数验证中介绍的,将被调用。
返回值
为表示当前工作目录完整路径在指定的驱动程序的字符串的指针或 NULL,它会指示错误。
如果 buffer 被指定,由于NULL 和没有足够的内存来分配maxlen 字符,一个错误就会出现,并将errno 设置为 ENOMEM。 如果路径的长度,包括终止 null 字符,超过 maxlen,错误出现,并将 errno 设置为 ERANGE。 有关这些错误代码的更多信息,请参见errno、_doserrno、_sys_errlist 和 _sys_nerr。
备注
_getdcwd 函数获取当前工作目录的完整路径作为指定的驱动程序并将其存储在 buffer。 如果当前工作目录被设置为根目录,则该字符串以反斜杠(\)结束。 如果当前工作目录设置为除根目录的目录,该字符串以该目录名结束,而不是以斜杠。
_wgetdcwd 是 _getdcwd的宽字符版本及其 buffer 参数和返回值是宽字符字符串。 否则,_wgetdcwd 和 _getdcwd 行为相同。
此函数是线程安全的,即使它依赖于 GetFullPathName,它本身不是线程安全的。 但是,可以违反线程安全。如果您的多线程应用程序调用此函数和 GetFullPathName,。 有关更多信息,转到MSDN Library 搜索 GetFullPathName。
函数具有_nolock 后缀的版本的行为和函数相同,但它不是线程安全的和不从由其他线程的干扰保护。 有关详细信息,请参阅_getdcwd_nolock、_wgetdcwd_nolock。
当 _DEBUG 和 _CRTDBG_MAP_ALLOC 定义时,对 _getdcwd,并 _wgetdcwd 替换调用 _getdcwd_dbg 和 _wgetdcwd_dbg,以便您可以调试内存分配。 有关更多信息,请参见_getdcwd_dbg、_wgetdcwd_dbg。
一般文本例程映射
Tchar.h 例程 |
未定义 _UNICODE 和 _MBCS |
已定义 _MBCS |
已定义 _UNICODE |
---|---|---|---|
_tgetdcwd |
_getdcwd |
_getdcwd |
_wgetdcwd |
要求
例程 |
必需的标头 |
---|---|
_getdcwd |
<direct.h> |
_wgetdcwd |
<direct.h> or <wchar.h> |
有关更多兼容性信息,请参见兼容性。
示例
请参见 _getdrive 中的示例。
.NET Framework 等效项
System::Environment::CurrentDirectory