_getdcwd、_wgetdcwd
取得目前工作目錄的完整路徑在指定磁碟上。
重要
這個應用程式開發介面不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 CRT 函式。
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
指定路徑的最大長度之非零正整數,在字元為:_getdcwd的char,以及_wgetdcwd的wchar_t。如果 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,您可以違反執行緒的安全性。 如需詳細資訊,請移至MSDN Library 然後搜尋 GetFullPathName。
此函式以_nolock 為字尾的版本與這個函式有相同的行為,除了它不是以安全執行緒為主,也不會防止其他執行緒的干擾。 如需詳細資訊,請參閱_getdcwd_nolock、_wgetdcwd_nolock。
定義_DEBUG 和 _CRTDBG_MAP_ALLOC 時, _getdcwd 和 _wgetdcwd呼叫的由 _getdcwd_dbg 和 _wgetdcwd_dbg 呼叫所取代,讓您可以偵錯記憶體配置。 如需詳細資訊,請參閱 _getdcwd_dbg、_wgetdcwd_dbg。
一般文字常式對應
Tchar.h 常式 |
未定義 _UNICODE and _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tgetdcwd |
_getdcwd |
_getdcwd |
_wgetdcwd |
需求
常式 |
必要的標頭 |
---|---|
_getdcwd |
<direct.h> |
_wgetdcwd |
<direct.h>或<wchar.h> |
如需詳細的相容性資訊,請參閱相容性。
範例
請參閱 _getdrive 中的範例。
.NET Framework 對等用法
System::Environment::CurrentDirectory