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)
  • 磁盘指示符上的目录
若要设置当前目录,请使用 SetCurrentDirectory 函数。

多线程应用程序和共享库代码不应使用
GetCurrentDirectory 函数 和 应避免使用相对路径名称。 SetCurrentDirectory 函数写入的当前目录状态存储在每个进程中作为全局变量,因此多线程应用程序无法可靠地使用此值,而不会从可能读取或设置此值的其他线程中损坏数据。 此限制也适用于 SetCurrentDirectoryGetFullPathName 函数。 例外情况是保证应用程序在单个线程中运行,例如,在创建任何其他线程之前,从main线程中的命令行参数字符串分析文件名。 在多线程应用程序或共享库代码中使用相对路径名称可能会产生不可预知的结果,因此不受支持。

在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)
 

示例

有关示例,请参阅 更改当前目录

要求

要求
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CreateDirectory

目录管理函数

GetSystemDirectory

GetWindowsDirectory

RemoveDirectory

SetCurrentDirectory