_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_s
getenv_s
Примечание.
Это ответственность за освобождение памяти, вызывая free
программу.
Если переменная не найдена, buffer
то имеет NULL
numberOfElements
значение 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