_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