_dupenv_s_dbg, _wdupenv_s_dbg

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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.

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 del parámetro. 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.

El _dupenv_s_dbg y _wdupenv_s_dbg funciones son idénticas a _dupenv_s y _wdupenv_s salvo que, cuando _DEBUG está definido, estas funciones usan la versión de depuración 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, consulte _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
RutinaEncabezado necesario
_dupenv_s_dbg<crtdbg.h>
_wdupenv_s_dbg<crtdbg.h>

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

// 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  
}  

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

System::Environment::GetEnvironmentVariable

Control de proceso y entorno
Constantes de entorno
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s

Mostrar: