_dupenv_s, _wdupenv_s
Obtém um valor do ambiente atual.
Importante
Esta API não pode ser usada em aplicativos executados no Tempo de Execução do Windows.Para obter mais informações, consulte Funções de CRT sem suporte com /ZW.
errno_t _dupenv_s( char **buffer, size_t *numberOfElements, const char *varname ); errno_t _wdupenv_s( wchar_t **buffer, size_t *numberOfElements, const wchar_t *varname );
Parâmetros
buffer
Buffer para armazenar o valor da variável.numberOfElements
Tamanho de buffer.varname
Nome da variável de ambiente.
Valor de retorno
Zero em caso de êxito; código de erro em caso de falha.
Essas funções validam seus parâmetros. Se buffer ou varname for NULL, o manipulador de parâmetros inválido será invocado como descrito em Validação do parâmetro. Se a execução puder continuar, as funções definirão errno como EINVAL e retornarão EINVAL.
Se essas funções não puderem alocar memória suficiente, elas definirão buffer como NULL e numberOfElements como 0, além de retornar ENOMEM.
Comentários
A função _dupenv_s pesquisa varname na lista de variáveis de ambiente. Se a variável for encontrada, _dupenv_s alocará um buffer e copiará o valor da variável para o buffer. O endereço e o tamanho do buffer são retornados em buffer e numberOfElements. Alocando o próprio buffer, _dupenv_s oferece uma alternativa mais conveniente para getenv_s, _wgetenv_s.
Dica
É de responsabilidade do programa chamador liberar a memória chamando free.
Se a variável não for encontrada, buffer será definido como NULL, numberOfElements será definido como 0 e o valor retornado será 0, pois essa situação não é considerada uma condição de erro.
Se não tiver interesse no tamanho do buffer, você poderá passar NULL para numberOfElements.
_dupenv_s não diferencia maiúsculas de minúsculas no sistema operacional Windows. _dupenv_s usa a cópia do ambiente apontado pela variável global _environ para acessar o ambiente. Consulte os Comentários em getenv_s, _wgetenv_s para ver uma discussão de _environ.
O valor em buffer é uma cópia do valor da variável de ambiente. Modificá-lo não afeta o ambiente. Use a função _putenv_s, _wputenv_s para modificar o valor de uma variável de ambiente.
_wdupenv_s é uma versão de caractere largo de _dupenv_s. Os argumentos de _wdupenv_s são cadeias de caracteres largas. A variável global _wenviron é uma versão de caractere largo de _environ. Consulte os Comentários em getenv_s, _wgetenv_s para obter mais informações em _wenviron.
Mapeamentos da rotina de texto genérico
Rotina TCHAR.H |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tdupenv_s |
_dupenv_s |
_dupenv_s |
_wdupenv_s |
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_dupenv_s |
<stdlib.h> |
_wdupenv_s |
<stdlib.h> ou <wchar.h> |
Para obter informações adicionais sobre compatibilidade, consulte Compatibilidade.
Exemplo
// crt_dupenv_s.c
#include <stdlib.h>
int main( void )
{
char *pValue;
size_t len;
errno_t err = _dupenv_s( &pValue, &len, "pathext" );
if ( err ) return -1;
printf( "pathext = %s\n", pValue );
free( pValue );
err = _dupenv_s( &pValue, &len, "nonexistentvariable" );
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