Sdílet prostřednictvím


_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í ENOMEMhodnotu .

Poznámky

Funkce _dupenv_s vyhledá seznam proměnných varnameprostř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_sk , _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 NULLhodnotu 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_sPomocí 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 Rutinní _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_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