_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