_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 malloc
y 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 GetFullPathName
a .
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