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


_getdcwd, _wgetdcwd

Получает полный путь текущей рабочей папки на указанном диске.

Синтаксис

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и _sys_nerr.

Замечания

Функция _getdcwd получает полный путь текущей рабочей папки на указанном диске и сохраняет его в параметре buffer. Если текущий рабочий каталог имеет значение root, строка заканчивается обратной косой чертой (\). Если текущая рабочая папка находится в каталоге, отличном от корневого, строка заканчивается именем каталога, а не обратной косой чертой.

_wgetdcwd — это версия функции _getdcwdдля расширенных символов, ее параметр buffer и возвращаемое значение представляют собой строки расширенных символов. В противном случае поведение _wgetdcwd и _getdcwd идентично.

Эта функция является потокобезопасной, несмотря на то, что она зависит от GetFullPathNameтого, что само по себе не является потокобезопасной. Однако вы можете нарушить безопасность потоков, если многопоточное приложение вызывает как эту функцию, так и GetFullPathName.

Версия этой функции, которая имеет _nolock суффикс, работает идентично этой функции, за исключением того, что она не является потокобезопасной и не защищена от вмешательства другими потоками. Дополнительные сведения см. в разделе _getdcwd_nolock, _wgetdcwd_nolock.

Когда _DEBUG и _CRTDBG_MAP_ALLOC определяются, вызовы и _wgetdcwd заменяются вызовами _getdcwd _getdcwd_dbg и _wgetdcwd_dbg, чтобы можно было отлаживать выделение памяти. Дополнительные сведения см. в статье_wgetdcwd_dbg_getdcwd_dbg .

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

Подпрограмма Tchar.h _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tgetdcwd _getdcwd _getdcwd _wgetdcwd

Требования

Маршрут Обязательный заголовок
_getdcwd <direct.h>
_wgetdcwd <direct.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

См. пример в разделе _getdrive.

См. также

Элемент управления каталогом
_chdir, _wchdir
_getcwd, _wgetcwd
_getdrive
_mkdir, _wmkdir
_rmdir, _wrmdir