_getdcwd, _wgetdcwd
获取当前工作目录的完整路径在指定的驱动程序。
重要
此 API 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW。
char *_getdcwd(
int drive,
char *buffer,
int maxlen
);
wchar_t *_wgetdcwd(
int drive,
wchar_t *buffer,
int maxlen
);
参数
drive
指定该驱动程序的负整数 (0 = 默认驱动程序,1 = 2 = A,B,等等)。如果指定的驱动程序不可用,或该驱动程序 (例如,可移动,修复,CD-ROM、RAM 磁盘或网络驱动器上) 无法确定的,参数无效处理程序,在 参数验证,将介绍调用。
buffer
路径的存储位置或 NULL。如果 NULL 指定,使用 malloc,此函数分配至少 maxlen 大小缓冲区,并且,_getdcwd 的返回值是指向分配的缓冲区。 缓冲区可通过调用 free 并向其传递指针释放。
maxlen
指定路径的最大长度的非零的正整数,在字符:_getdcwd 的 _wgetdcwd的 char 和 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> 或 <wchar.h> |
有关更多兼容性信息,请参见 兼容性。
示例
请参见 _getdrive 中的示例。
.NET Framework 等效项
System::Environment::CurrentDirectory