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


_dupenv_s, _wdupenv_s

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

Внимание

Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

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 предоставляет более удобную альтернативу . _wgetenv_sgetenv_s

Примечание.

Это ответственность за освобождение памяти, вызывая freeпрограмму.

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

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

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

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

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

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

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)

См. также

Управление процессами и средой
Константы окружающей среды
_dupenv_s_dbg, _wdupenv_s_dbg
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s