取得指定磁碟機上目前工作目錄的完整路徑。
語法
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 小於或等於零,則會叫用無效的參數處理程式。 如需詳細資訊,請參閱 參數驗證。
傳回值
代表指定磁碟機上目前工作目錄之完整路徑的字串指標,或 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