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 para almacenar el valor de la variable.

  • numberOfElements
    Tamaño de buffer.

  • varname
    Nombre de la variable de entorno.

  • blockType
    Tipo solicitado del bloque de memoria: _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

Cero en correctamente, un código de error del error.

estas funciones validan sus parámetros; si buffer o varname es NULL, se invoca el controlador no válido del parámetro tal como se describe en Validación de parámetros.Si la ejecución puede continuar, errno establecido funciones a EINVAL y a EINVALreturn.

Si estas funciones no pueden asignar suficiente memoria, establecen buffer a NULL y a numberOfElements a 0, y devuelven ENOMEM.

Comentarios

Las funciones de _dupenv_s_dbg y de _wdupenv_s_dbg son idénticas a _dupenv_s y a _wdupenv_s salvo que, cuando _DEBUG está definido, estas funciones utilizan 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.

No necesita llamar a estas funciones explícitamente en la mayoría de los casos.En su lugar, puede definir el marcador _CRTDBG_MAP_ALLOC.Cuando _CRTDBG_MAP_ALLOC está definido, las llamadas a _dupenv_sy _wdupenv_s se reasignan a _dupenv_s_dbg y a _wdupenv_s_dbg, respectivamente, con blockType establecido en _NORMAL_BLOCK.Por consiguiente, no necesita llamar a estas funciones explícitamente a menos que desee marcar los bloques de pila como _CLIENT_BLOCK.Para obtener más información sobre tipos bloqueados, vea Tipos de bloques en el montón de depuración.

Asignaciones de la rutina de texto genérico

rutina de TCHAR.H

_UNICODE y _MBCS no definido

_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:: entorno:: GetEnvironmentVariable

Vea también

Referencia

Proceso y control ambiental

Constantes de entorno

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s