_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