_getdcwd, _wgetdcwd
Возвращает полный путь текущей рабочей папки на указанном диске.
Важно!
Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.
char *_getdcwd(
int drive,
char *buffer,
int maxlen
);
wchar_t *_wgetdcwd(
int drive,
wchar_t *buffer,
int maxlen
);
Параметры
drive
Неотрицательное целое число, которое определяет диск (0 = диск по умолчанию, 1 = A, 2 = B и т.д.).Если указанный диск недоступен или тип диска (например, съемный, жесткий, компакт-диск, диск ОЗУ или сетевой диск) не может быть определен, то вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров.
buffer
Место хранения для пути или NULL.Если указано NULL, эта функция выделяет буфер размером не менее maxlen с помощью malloc и возвращаемое значение _getdcwd - указатель на выделенный буфер. Буфер может быть освобожден с помощью вызова free и передачи ему указателя.
maxlen
Отличное от нуля положительное целое число, определяющее максимальную длину пути, в символах. char для _getdcwd и wchar_t для _wgetdcwd.Если maxlen не больше нуля, то вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров.
Возвращаемое значение
Указатель на строку, которая представляет полный путь текущей рабочей папки в указанном диске или NULL, что указывает на ошибку.
Если buffer принимает значение NULL и недостаточно памяти для выделения maxlen символов, возникает ошибка и errno принимает значение ENOMEM. Если длина пути, включая завершающий символ null, превышает maxlen, возникает ошибка и errno принимает значение ERANGE. Дополнительные сведения об этих кодах ошибок см. в разделе errno, _doserrno, _sys_errlist, and _sys_nerr.
Заметки
Функция _getdcwd получает полный путь текущей рабочей папки на указанном диске и сохраняет ее в buffer. Если текущей рабочей папкой является корневой каталог, строка заканчивается обратной косой чертой (\). Если рабочая папка находится в каталоге, отличном от корневого, то строка заканчивается именем каталога, а не обратной косой чертой.
_wgetdcwd — это двухбайтовая версия _getdcwd, и её параметр buffer и возвращаемое значение представляют собой двухбайтовые строки. В остальном поведение _wgetdcwd и _getdcwd идентично.
Эта функция потокобезопасна, даже если она зависит от GetFullPathName, которая сама не потокобезопасна. Однако можно нарушить потокобезопасность, если многопоточное приложение вызывает и эту функцию и GetFullPathName. Дополнительные сведения см. в Библиотека MSDN с поисковым параметром GetFullPathName.
Версия этой функции с суффиксом _nolock работает идентично этой функции, за исключением того, что она не потокобезопасна и не защищена от взаимодействия с другими потоками. Для получения дополнительной информации см. _getdcwd_nolock, _wgetdcwd_nolock.
Если заданы _DEBUG и _CRTDBG_MAP_ALLOC, вызовы _getdcwd и _wgetdcwd заменяются вызовами _getdcwd_dbg и _wgetdcwd_dbg, что обеспечивает возможность отладки выделения памяти. Дополнительные сведения см. в разделе _getdcwd_dbg, _wgetdcwd_dbg.
Универсальное текстовое сопоставление функций
Подпрограмма Tchar.h |
_UNICODE и _MBCS не определены |
_MBCS определено |
_UNICODE определено |
---|---|---|---|
_tgetdcwd |
_getdcwd |
_getdcwd |
_wgetdcwd |
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_getdcwd |
<direct.h> |
_wgetdcwd |
<direct.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
См. пример в разделе _getdrive.
Эквивалент в .NET Framework
System::Environment::CurrentDirectory