_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