_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