Partilhar via


_dupenv_s_dbg, _wdupenv_s_dbg

Obter um valor do ambiente atual. Versões de _dupenv_s, _wdupenv_s que atribuem a memória com _malloc_dbg para fornecer informações de depuração 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
    Buffer para armazenar o valor da variável.

  • numberOfElements
    Tamanho do buffer.

  • varname
    Nome de variável de ambiente.

  • blockType
    O tipo solicitado do bloco de memória: _CLIENT_BLOCK ou _NORMAL_BLOCK.

  • filename
    Ponteiro para o nome do arquivo de origem ou de NULL.

  • linenumber
    Número de linha no arquivo de origem ou em NULL.

Valor de retorno

Zero se tiver êxito, um código de erro em falha.

Essas funções validam seus parâmetros; se buffer ou varname for NULL, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação do parâmetro. Se a execução puder continuar, essas funções serão definidas errno como EINVAL e retornarão EINVAL.

Se essas funções não puderem atribuir memória suficiente, definirão buffer para NULL e numberOfElements para 0, e retornarão ENOMEM.

Comentários

As funções de _dupenv_s_dbg e de _wdupenv_s_dbg são idênticas a _dupenv_s e a _wdupenv_s exceto que, quando _DEBUG é definido, essas funções usam a versão de depuração de malloc, _malloc_dbg, para alocar memória para o valor da variável de ambiente. Para obter informações sobre os recursos de depuração de _malloc_dbg, consulte _malloc_dbg.

Você não precisa chamar explicitamente na maioria dos casos essas funções. Em vez disso, você pode definir o sinalizador _CRTDBG_MAP_ALLOC. Quando _CRTDBG_MAP_ALLOC é definido, as chamadas para _dupenv_s e _wdupenv_s remapeou a _dupenv_s_dbg e a _wdupenv_s_dbg, respectivamente, com blockType definido como _NORMAL_BLOCK. Assim, você não precisa chamar explicitamente essas funções a menos que você queira marcar os blocos de heap como _CLIENT_BLOCK. Para obter mais informações sobre os tipos do bloco, consulte Tipos de blocos no heap de depuração.

Mapeamentos da rotina de texto genérico

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tdupenv_s_dbg

_dupenv_s_dbg

_dupenv_s_dbg

_wdupenv_s_dbg

Requisitos

Rotina

Cabeçalho necessário

_dupenv_s_dbg

<crtdbg.h>

_wdupenv_s_dbg

<crtdbg.h>

Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.

Exemplo

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

Saída de Exemplo

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

Equivalência do .NET Framework

System::Environment::GetEnvironmentVariable

Consulte também

Referência

Processo e controle de ambiente

Constantes ambientais

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s