%>
在指定的驱动器上获取当前工作目录的完整路径。
语法
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
的 _getdcwd
和 wchar_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
中的示例。