_dupenv_s
, _wdupenv_s
Obtiene un valor del entorno actual.
Importante
Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.
Sintaxis
errno_t _dupenv_s(
char **buffer,
size_t *numberOfElements,
const char *varname
);
errno_t _wdupenv_s(
wchar_t **buffer,
size_t *numberOfElements,
const wchar_t *varname
);
Parámetros
buffer
Búfer en el que se va a almacenar el valor de la variable.
numberOfElements
Tamaño de buffer
.
varname
Nombre de la variable de entorno.
Valor devuelto
Devuelve cero si se ejecuta correctamente; devuelve un código de error si se produce un error.
Estas funciones validan sus parámetros; si buffer
o varname
es NULL
, el controlador de parámetros no válidos se invoca como se describe en Validación de parámetros. Si la ejecución puede continuar, las funciones establecen errno
en EINVAL
y devuelven EINVAL
.
Si estas funciones no pueden asignar suficiente memoria, se establecen buffer
NULL
en y numberOfElements
en 0 y devuelven ENOMEM
.
Comentarios
La función _dupenv_s
busca varname
en la lista de variables de entorno. Si se encuentra la variable, _dupenv_s
asigna un búfer y copia el valor de la variable en el búfer. La dirección y la longitud del búfer se devuelven en buffer
y numberOfElements
. Dado que asigna el propio búfer, _dupenv_s
proporciona una alternativa más conveniente a getenv_s
, _wgetenv_s
.
Nota:
Es responsabilidad del programa de llamada liberar la memoria llamando a free
.
Si no se encuentra la variable, buffer
se establece en , numberOfElements
se establece NULL
en 0 y el valor devuelto es 0 porque esta situación no se considera una condición de error.
Si no le interesa el tamaño del búfer, puede pasar NULL
para numberOfElements
.
_dupenv_s
no distingue entre mayúsculas y minúsculas en el sistema operativo Windows. _dupenv_s
usa la copia del entorno indicado por la variable global _environ
para tener acceso al entorno. Vea los comentarios de getenv_s
, _wgetenv_s
para obtener una descripción de _environ
.
El valor de buffer
es una copia del valor de la variable de entorno; su modificación no afecta al entorno. Use la función _putenv_s
, _wputenv_s
para modificar el valor de una variable de entorno.
_wdupenv_s
es una versión con caracteres anchos de _dupenv_s
; los argumentos de _wdupenv_s
son cadenas de caracteres anchos. La variable global _wenviron
es una versión con caracteres anchos de _environ
. Vea los comentarios de getenv_s
, _wgetenv_s
para obtener más información sobre _wenviron
.
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 |
---|---|---|---|
_tdupenv_s |
_dupenv_s |
_dupenv_s |
_wdupenv_s |
Requisitos
Routine | Encabezado necesario |
---|---|
_dupenv_s |
<stdlib.h> |
_wdupenv_s |
<stdlib.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_dupenv_s.c
#include <stdlib.h>
int main( void )
{
char *pValue;
size_t len;
errno_t err = _dupenv_s( &pValue, &len, "pathext" );
if ( err ) return -1;
printf( "pathext = %s\n", pValue );
free( pValue );
err = _dupenv_s( &pValue, &len, "nonexistentvariable" );
if ( err ) return -1;
printf( "nonexistentvariable = %s\n", pValue );
free( pValue ); // It's OK to call free with NULL
}
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Vea también
Control de procesos y entornos
Constantes de entorno
_dupenv_s_dbg
, _wdupenv_s_dbg
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s