GetCurrentDirectory 函式 (winbase.h)
擷取目前進程的目前目錄。
語法
DWORD GetCurrentDirectory(
[in] DWORD nBufferLength,
[out] LPTSTR lpBuffer
);
參數
[in] nBufferLength
目前目錄字串的緩衝區長度,以 TCHAR 表示。 緩衝區長度必須包含終止 Null 字元的空間。
[out] lpBuffer
接收目前目錄字串之緩衝區的指標。 這個以 Null 結尾的字串會指定目前目錄的絕對路徑。
若要判斷所需的緩衝區大小,請將此參數設定為 NULL ,並將 nBufferLength 參數設定為 0。
傳回值
如果函式成功,傳回值會指定寫入緩衝區的字元數,不包括終止的 Null 字元。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
如果 lpBuffer 所指向的緩衝區不夠大,則傳回值會以字元指定緩衝區的必要大小,包括 null 終止字元。
備註
每個進程都有一個目前目錄,其中包含兩個部分:
- 磁碟指示項,其為驅動器號後面接著冒號,或伺服器名稱後面接著共用名稱 (\\servername\sharename)
- 磁碟指示項上的目錄
多線程應用程式和共用連結庫程式碼不應使用
GetCurrentDirectory 函式 ,應該避免使用相對路徑名稱。 SetCurrentDirectory 函式所撰寫的目前目錄狀態會儲存為每個進程的全域變數,因此多線程應用程式無法可靠地使用此值,而無法從可能讀取或設定此值的其他線程損毀數據。 這項限制也適用於 SetCurrentDirectory 和 GetFullPathName 函式。 例外狀況是應用程式保證在單一線程中執行,例如,在建立任何其他線程之前,先從主線程中的命令行自變數字串剖析檔名。 在多線程應用程式或共用連結庫程式碼中使用相對路徑名稱可能會產生無法預測的結果,而且不受支援。
在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。
技術 | 支援 |
---|---|
伺服器消息塊 (SMB) 3.0 通訊協定 | Yes |
SMB 3.0 透明故障轉移 (TFO) | Yes |
具有向外延展檔案共用的SMB 3.0 (SO) | Yes |
叢集共用磁碟區文件系統 (CsvFS) | Yes |
彈性檔案系統 (ReFS) | 是 |
範例
如需範例,請參閱 變更目前目錄。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |