Compartir a través de


_dupenv_s_dbg, _wdupenv_s_dbg

Obtiene un valor del entorno actual. Versiones de _dupenv_s, _wdupenv_s que asignan memoria con _malloc_dbg para proporcionar información de depuración adicional.

errno_t _dupenv_s_dbg(
   char **buffer,
   size_t *numberOfElements,
   const char *varname,
   int blockType,
   const char *filename,
   int linenumber
);
errno_t _wdupenv_s_dbg(
   wchar_t **buffer,
   size_t * numberOfElements,
   const wchar_t *varname,
   int blockType,
   const char *filename,
   int linenumber
);

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.

  • blockType
    Tipo de bloque de memoria solicitado: _CLIENT_BLOCK o _NORMAL_BLOCK.

  • filename
    Puntero al nombre del archivo de código fuente o de NULL.

  • linenumber
    Número de línea del archivo de código fuente o NULL.

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

Las funciones _dupenv_s_dbg y _wdupenv_s_dbg son idénticas a _dupenv_s y _wdupenv_s, salvo que, si se define _DEBUG, estas funciones usan la versión de depuración de malloc, _malloc_dbg, para asignar memoria para el valor de la variable de entorno. Para obtener información sobre las características de depuración de _malloc_dbg, vea _malloc_dbg.

En la mayoría de los casos, no es necesario llamar a estas funciones explícitamente en la mayoría. En lugar de ello, se puede definir la marca _CRTDBG_MAP_ALLOC. Si se define _CRTDBG_MAP_ALLOC, las llamadas a _dupenv_s y _wdupenv_s se reasignan a _dupenv_s_dbg y _wdupenv_s_dbg, respectivamente, con el parámetro blockType establecido en _NORMAL_BLOCK. Por consiguiente, no necesario llamar a estas funciones explícitamente a menos que se desee marcar los bloques del montón como _CLIENT_BLOCK. Para obtener más información sobre los tipos de bloques, vea Tipos de bloques en el montón de depuración.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tdupenv_s_dbg

_dupenv_s_dbg

_dupenv_s_dbg

_wdupenv_s_dbg

Requisitos

Rutina

Encabezado necesario

_dupenv_s_dbg

<crtdbg.h>

_wdupenv_s_dbg

<crtdbg.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

// crt_dupenv_s_dbg.c
#include  <stdlib.h>
#include <crtdbg.h>

int main( void )
{
   char *pValue;
   size_t len;
   errno_t err = _dupenv_s_dbg( &pValue, &len, "pathext",
      _NORMAL_BLOCK, __FILE__, __LINE__ );
   if ( err ) return -1;
   printf( "pathext = %s\n", pValue );
   free( pValue );
   err = _dupenv_s_dbg( &pValue, &len, "nonexistentvariable",
      _NORMAL_BLOCK, __FILE__, __LINE__ );
   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

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s