Compartir a través de


_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 más información, vea Funciones de CRT no admitidas con /ZW.

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, se invoca el controlador de parámetros no válidos, 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, establecen buffer en NULL 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. Mediante la asignación del búfer en sí, _dupenv_s proporciona una alternativa más fácil de usar para getenv_s, _wgetenv_s.

Nota

Es responsabilidad del programa de llamada liberar memoria llamando a free.

Si no se encuentra la variable, buffer se establece en NULL, numberOfElements se establece en 0 y el valor devuelto es 0, porque esta situación no se considera una condición de error.

Si el tamaño de búfer no le interesa, 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.

Asignaciones de rutina 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

Rutina

Encabezado necesario

_dupenv_s

<stdlib.h>

_wdupenv_s

<stdlib.h> o <wchar.h>

Para obtener más información sobre compatibilidad, vea 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
}

Resultados del ejemplo

pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)

Equivalente en .NET Framework

System::Environment::GetEnvironmentVariable

Vea también

Referencia

Control de proceso y de entorno

Constantes de entorno

_dupenv_s_dbg, _wdupenv_s_dbg

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s