_dupenv_s
, _wdupenv_s
Získá hodnotu z aktuálního prostředí.
Důležité
Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.
Syntaxe
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
);
Parametry
buffer
Vyrovnávací paměť pro uložení hodnoty proměnné.
numberOfElements
Velikost .buffer
varname
Název proměnné prostředí
Vrácená hodnota
Nula při úspěchu, kód chyby při selhání.
Tyto funkce ověřují své parametry; pokud buffer
nebo varname
je NULL
, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, funkce nastavené errno
na EINVAL
a vrátit EINVAL
.
Pokud tyto funkce nemůžou přidělit dostatek paměti, nastaví buffer
se na NULL
hodnotu numberOfElements
0 a vrátí ENOMEM
hodnotu .
Poznámky
Funkce _dupenv_s
vyhledá seznam proměnných varname
prostředí . Pokud se proměnná najde, _dupenv_s
přidělí vyrovnávací paměť a zkopíruje hodnotu proměnné do vyrovnávací paměti. Adresa a délka vyrovnávací paměti se vrátí do buffer
a numberOfElements
. Vzhledem k tomu, že přiděluje samotnou vyrovnávací paměť, _dupenv_s
poskytuje pohodlnější alternativu getenv_s
k , _wgetenv_s
.
Poznámka:
Je zodpovědností volajícího programu uvolnit paměť voláním free
.
Pokud proměnnou nenajdete, buffer
nastaví se na NULL
hodnotu numberOfElements
0 a návratová hodnota je 0, protože tato situace se nepovažuje za chybový stav.
Pokud nemáte zájem o velikost vyrovnávací paměti, můžete předat NULL
.numberOfElements
_dupenv_s
nerozlišuje velká a malá písmena v operačním systému Windows. _dupenv_s
používá kopii prostředí odkazované globální proměnnou _environ
pro přístup k prostředí. Viz poznámky v getenv_s
, _wgetenv_s
kde najdete diskuzi o _environ
.
Hodnota je buffer
kopií hodnoty proměnné prostředí; její úprava nemá žádný vliv na prostředí. _putenv_s
Pomocí funkce , _wputenv_s
můžete upravit hodnotu proměnné prostředí.
_wdupenv_s
je verze širokého znaku _dupenv_s
; argumenty _wdupenv_s
jsou řetězce širokého znaku. Globální _wenviron
proměnná je širokoznační verze _environ
. Viz poznámky v getenv_s
, _wgetenv_s
více o _wenviron
.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
TCHAR.H rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tdupenv_s |
_dupenv_s |
_dupenv_s |
_wdupenv_s |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_dupenv_s |
<stdlib.h> |
_wdupenv_s |
<stdlib.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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)
Viz také
Řízení procesů a prostředí
Konstanty prostředí
_dupenv_s_dbg
, _wdupenv_s_dbg
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s