Поделиться через


Функция GetCurrentDirectory (winbase.h)

Извлекает текущий каталог для текущего процесса.

Синтаксис

DWORD GetCurrentDirectory(
  [in]  DWORD  nBufferLength,
  [out] LPTSTR lpBuffer
);

Параметры

[in] nBufferLength

Длина буфера для текущей строки каталога в TCHAR. Длина буфера должна содержать место для завершающего символа NULL.

[out] lpBuffer

Указатель на буфер, который получает текущую строку каталога. Эта строка, завершающаяся значением NULL, задает абсолютный путь к текущему каталогу.

Чтобы определить требуемый размер буфера, задайте для этого параметра значение NULL , а для параметра nBufferLength — значение 0.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение указывает количество символов, записываемых в буфер, не включая завершающий пустой символ.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Если буфер, на который указывает lpBuffer , недостаточно велик, возвращаемое значение указывает требуемый размер буфера в символах, включая завершающий символ NULL.

Комментарии

Каждый процесс имеет один текущий каталог, состоящий из двух частей:

  • Конструктор диска, представляющий собой букву диска, за которой следует двоеточие, или имя сервера, за которым следует имя общей папки (\\имя_сервера\имя_общей_папки).
  • Каталог в конструкторе диска
Чтобы задать текущий каталог, используйте функцию SetCurrentDirectory .

Многопоточные приложения и код общей библиотеки не должны использовать
Функция GetCurrentDirectory и не должны использовать относительные имена путей. Текущее состояние каталога, записанное функцией SetCurrentDirectory , хранится в каждом процессе в виде глобальной переменной, поэтому многопоточные приложения не могут надежно использовать это значение без возможного повреждения данных из других потоков, которые также могут считывать или задавать это значение. Это ограничение также применяется к функциям SetCurrentDirectory и GetFullPathName . Исключением является выполнение приложения в одном потоке, например анализ имен файлов из строки аргумента командной строки в потоке main перед созданием дополнительных потоков. Использование относительных имен путей в многопоточных приложениях или коде общей библиотеки может дать непредсказуемые результаты и не поддерживается.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Да
SMB 3.0 Transparent Failover (TFO) Да
SMB 3.0 с масштабируемыми общими папками (SO) Да
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Да
 

Примеры

Пример см. в разделе Изменение текущего каталога.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CreateDirectory

Функции управления каталогами

GetSystemDirectory

GetWindowsDirectory

RemoveDirectory

SetCurrentDirectory