Compartilhar via


_dupenv_s_dbg, _wdupenv_s_dbg

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

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
    dimensionar de buffer.

  • varname
    Nome da variável de ambiente.

  • blockType
    Solicitado o tipo de bloco de memória: _CLIENT_BLOCK ou _NORMAL_BLOCK.

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

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

Valor de retorno

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

Essas funções para validar seus parâmetros; se buffer ou varname é NULL, o manipulador de parâmetro inválido é chamado sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, as funções conjunto errno para EINVAL e retornar EINVAL.

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

Comentários

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

Você não precisa telefonar essas funções explicitamente na maioria dos casos.Em vez disso, você pode definir o sinalizar _CRTDBG_MAP_ALLOC. Quando _CRTDBG_MAP_ALLOC é definido, chamadas para _dupenv_s and _wdupenv_sare remapped to _dupenv_s_dbgand _wdupenv_s_dbg, respectivamente, com o blockType conjunto para _NORMAL_BLOCK. Portanto, não é necessário chamar essas funções explicitamente, a menos que você deseja marcar sistema autônomo blocos de heap sistema autônomo _CLIENT_BLOCK. Para obter mais informações sobre tipos de bloco, consulte Tipos de blocos na heap de Depurar.

Mapeamentos de rotina de texto genérica

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 obter informações adicionais 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)

Equivalente do NET Framework

sistema::ambiente::GetEnvironmentVariable

Consulte também

Referência

Processo e ambiente de controle

Constantes ambientais

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s