_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