Compartir a través de


_getdcwd, _wgetdcwd

Obtiene la ruta de acceso completa del directorio de trabajo actual en la unidad especificada.

Sintaxis

char *_getdcwd(
   int drive,
   char *buffer,
   int maxlen
);
wchar_t *_wgetdcwd(
   int drive,
   wchar_t *buffer,
   int maxlen
);

Parámetros

drive
Entero no negativo que especifica la unidad (0 = unidad predeterminada, 1 = A, 2 = B, etc.).

Si la unidad especificada no está disponible, se invoca al controlador de parámetros no válidos. También se invoca cuando no se puede determinar el tipo de unidad (por ejemplo, extraíble, fijo, CD-ROM, disco RAM o unidad de red). Para obtener más información, consulte Validación de parámetros.

buffer
Ubicación de almacenamiento para la ruta de acceso o NULL.

Si NULL se especifica, esta función asigna un búfer de al menos maxlen tamaño mediante mallocy el valor devuelto de _getdcwd es un puntero al búfer asignado. El búfer se puede liberar llamando a free y pasándole el puntero.

maxlen
Entero positivo distinto de cero que especifica la longitud máxima de la ruta de acceso en caracteres: char para _getdcwd y wchar_t para _wgetdcwd.

Si maxlen es menor o igual que cero, se invoca el controlador de parámetros no válidos. Para obtener más información, consulte Validación de parámetros.

Valor devuelto

Puntero a una cadena que representa la ruta de acceso completa del directorio de trabajo actual en la unidad especificada, o NULL, que indica un error.

Si buffer se especifica como NULL y no hay memoria suficiente para asignar maxlen caracteres, se produce un error y errno se establece en ENOMEM. Si la longitud de la ruta de acceso que incluye el carácter nulo de terminación supera maxlen, se produce un error y errno se establece en ERANGE. Para obtener más información sobre estos códigos de error, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Comentarios

La función _getdcwd obtiene la ruta de acceso completa del directorio de trabajo actual en la unidad especificada y la almacena en buffer. Si el directorio de trabajo actual se establece en la raíz, la cadena termina con una barra diagonal inversa (\). Si el directorio de trabajo actual es un directorio distinto de la raíz, la cadena finaliza con el nombre de directorio y no con una barra diagonal inversa.

_wgetdcwd es una versión con caracteres anchos de _getdcwd, y su parámetro buffer y su valor devuelto son cadenas de caracteres anchos. De lo contrario, los objetos _wgetdcwd y _getdcwd se comportan de forma idéntica.

Esta función es segura para subprocesos aunque dependa de GetFullPathName, que no es segura para subprocesos. Sin embargo, puede infringir la seguridad de los subprocesos si la aplicación multiproceso llama tanto a esta función como GetFullPathNamea .

La versión de esta función que tiene el _nolock sufijo se comporta de forma idéntica a esta función, excepto que no es segura para subprocesos y no está protegida contra interferencias por otros subprocesos. Para más información, vea _getdcwd_nolock, _wgetdcwd_nolock.

Cuando _DEBUG se definen y _CRTDBG_MAP_ALLOC , las llamadas a _getdcwd y _wgetdcwd se reemplazan por llamadas a _getdcwd_dbg y _wgetdcwd_dbg, para que pueda depurar asignaciones de memoria. Para obtener más información, vea_getdcwd_dbg . _wgetdcwd_dbg

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tgetdcwd _getdcwd _getdcwd _wgetdcwd

Requisitos

Routine Encabezado necesario
_getdcwd <direct.h>
_wgetdcwd <direct.h> o <wchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

Consulte el ejemplo de _getdrive.

Consulte también

Control de directorio
_chdir, _wchdir
_getcwd, _wgetcwd
_getdrive
_mkdir, _wmkdir
_rmdir, _wrmdir