Compartilhar via


_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

Consulte também

Referência

Processo e controle de ambiente

Constantes ambientais

_dupenv_s_dbg, _wdupenv_s_dbg

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s