分享方式:


_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 小於或等於零,則會叫用無效的參數處理程式。 如需詳細資訊,請參閱 參數驗證

傳回值

代表指定磁碟機上目前工作目錄之完整路徑的字串指標,或 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

定義 和 _CRTDBG_MAP_ALLOC_DEBUG,對和 _wgetdcwd 的呼叫會由 和_wgetdcwd_dbg的呼叫_getdcwd_getdcwd_dbg取代,讓您可以偵錯記憶體配置。 如需詳細資訊,請參閱_wgetdcwd_dbg_getdcwd_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