_getdcwd_wgetdcwd

在指定的驱动器上获取当前工作目录的完整路径。

语法

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
一个指定路径的最大长度(以字符为单位)的非零正整数: char_getdcwdwchar_t_wgetdcwd

如果maxlen小于或等于 0,则将调用无效参数处理程序。 有关详细信息,请参阅参数验证

返回值

指向字符串的指针,该字符串表示指定驱动器上当前工作目录的完整路径,或指示错误的 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,可以违反线程安全性。

具有_nolock后缀的此函数版本与此函数的行为相同,但它不是线程安全的,并且会受到其他线程的影响。 有关详细信息,请参阅 _getdcwd_nolock_wgetdcwd_nolock

在定义_DEBUG_CRTDBG_MAP_ALLOC时,对_getdcwd_wgetdcwd的调用会替换为对_getdcwd_dbg_wgetdcwd_dbg的调用,以便你能够调试内存分配。 有关详细信息,请参阅_getdcwd_dbg, _wgetdcwd_dbg

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

一般文本例程映射

Tchar.h 例程 _UNICODE_MBCS 未定义 _MBCS 已定义 _UNICODE 已定义
_tgetdcwd _getdcwd _getdcwd _wgetdcwd

要求

例程 必需的标头
_getdcwd <direct.h>
_wgetdcwd <direct.h> 或 <wchar.h>

有关兼容性的详细信息,请参阅 兼容性

示例

请参见 _getdrive中的示例。

另请参阅

目录控制
_chdir, _wchdir
_getcwd, _wgetcwd
_getdrive
_mkdir, _wmkdir
_rmdir, _wrmdir