_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
為 _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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應