Partilhar via


_dupenv_s_dbg, _wdupenv_s_dbg

Para obter um valor do ambiente atual.Versões do _dupenv_s, _wdupenv_s que alocar memória com _malloc_dbg para fornecer informações adicionais de depuração.

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
    Size of buffer.

  • varname
    Nome de variável de ambiente.

  • blockType
    Solicitou um tipo de bloco de memória: _CLIENT_BLOCK ou _NORMAL_BLOCK.

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

  • linenumber
    O número no arquivo de origem de linha ou NULL.

Valor de retorno

Zero em caso de sucesso, um código de erro em caso de falha.

Essas funções validar seus parâmetros; Se buffer ou varname é NULL, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, as funções definidas errno para EINVAL e retornar EINVAL.

Se essas funções não é possível alocar memória suficiente, elas definidas buffer para NULL e numberOfElements como 0 e retorno ENOMEM.

Comentários

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

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

Mapeamentos de rotina de texto genérico

TCHAR.Rotina H

_ Unicode & _ MBCS do arquivo não definido

_ MBCS do arquivo 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 obter 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 do ambiente

Constantes ambientais

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s