Поделиться через


_dupenv_s, _wdupenv_s

Получает значение из текущей среды.

Важно!

Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows.Дополнительные сведения см. в разделе Функции CRT, которые не поддерживаются с ключом /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 );

Параметры

  • buffer
    Буфер для хранения значения переменной.

  • numberOfElements
    Размер buffer.

  • varname
    Имя переменной среды.

Возвращаемое значение

Нуль при успешном выполнении, код ошибки при сбое.

Эти функции проверяют свои параметры. Если buffer или varname имеют значение NULL, вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, функции задают для errno значение EINVAL и возвращают EINVAL.

Если этим функциям не удается выделить достаточно памяти, они задают для параметра buffer значение NULL, а для numberOfElements значение 0 и возвращают ENOMEM.

Заметки

Функция _dupenv_s выполняет поиск в списке переменных среды для varname. Если переменная найдена, _dupenv_s выделяет буфер и копирует значение переменной в буфер. Адрес и длина буфера возвращаются в buffer и numberOfElements. Выделяя собственно буфер, _dupenv_s обеспечивает более удобную альтернативу getenv_s, _wgetenv_s.

Примечание

Ответственность за освобождение памяти путем вызова функции свободные лежит на вызывающей программе.

Если переменная не найдена, для buffer задается значение NULL, для numberOfElements — 0, и возвращаемое значение равно 0, так как эта ситуация не считается условием ошибки.

Если вас не интересует размер буфера, можно передать значение NULL для numberOfElements.

_dupenv_s не учитывает регистр в операционной системе Windows. _dupenv_s для получения доступа к среде использует копию среды, на которую указывает глобальная переменная _environ. Дополнительные сведения о функции _environ см. в подразделе примечаний раздела getenv_s, _wgetenv_s.

Значение параметра buffer является копией значения переменной среды; его изменение не влияет на среду. Чтобы изменить значение переменной среды, используйте функцию _putenv_s, _wputenv_s.

_wdupenv_s — это версия _dupenv_s с расширенными символами; аргументы для _wdupenv_s — это строки расширенных символов. Глобальная переменная _wenviron — это версия _environ с расширенными символами. Дополнительные сведения о функции _wenviron см. в подразделе примечаний раздела getenv_s, _wgetenv_s.

Универсальное текстовое сопоставление функций

Подпрограмма TCHAR.H

_UNICODE и _MBCS не определены

_MBCS определено

_UNICODE определено

_tdupenv_s

_dupenv_s

_dupenv_s

_wdupenv_s

Требования

Подпрограмма

Обязательный заголовок

_dupenv_s

<stdlib.h>

_wdupenv_s

<stdlib.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// 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
}

Пример результатов выполнения

pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)

Эквивалент в .NET Framework

System::Environment::GetEnvironmentVariable

См. также

Ссылки

Управление процессами и средой

Константы среды

_dupenv_s_dbg, _wdupenv_s_dbg

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s