Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Получает значение из текущей среды.
Внимание
Этот 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