Sdílet prostřednictvím


_dupenv_s_dbg, _wdupenv_s_dbg

Získáte hodnoty z aktuálního prostředí. Verze _dupenv_s, _wdupenv_s , přidělení paměti s _malloc_dbg k poskytování dalších informací o ladění.

errno_t _dupenv_s_dbg(
   char **buffer,
   size_t *numberOfElements,
   const char *varname,
   int blockType,
   const char *filename,
   int linenumber
);
errno_t _wdupenv_s_dbg(
   wchar_t **buffer,
   size_t * numberOfElements,
   const wchar_t *varname,
   int blockType,
   const char *filename,
   int linenumber
);

Parametry

  • buffer
    Vyrovnávací paměť pro ukládání hodnot proměnné.

  • numberOfElements
    Velikost buffer.

  • varname
    Název proměnné prostředí.

  • blockType
    Požádal o typu bloku paměti: _CLIENT_BLOCK nebo _NORMAL_BLOCK.

  • filename
    Ukazatel myši na název zdrojového souboru nebo NULL.

  • linenumber
    Číslo řádku na zdrojovém souboru nebo NULL.

Vrácená hodnota

Nula při úspěchu; při selhání kód chyby.

Tyto funkce ověřují své parametry; pokud je buffer nebo varnameNULL, je vyvolána obslužná rutina neplatného parametru, jak je popsáno v tématu Ověření parametru.Pokud smí provádění pokračovat, funkce nastaví errno na EINVAL a vrátí EINVAL.

Pokud těmto funkcím nelze přidělit dostatek paměti, nastaví buffer na NULL a numberOfElements na 0 a vrátí ENOMEM.

Poznámky

_dupenv_s_dbg a _wdupenv_s_dbg funkce jsou shodné s _dupenv_s a _wdupenv_s s tím rozdílem, že při _DEBUG je definována, tyto funkce použít ladicí verze malloc, _malloc_dbg, přidělení paměti pro hodnotu proměnné prostředí.Další informace o ladění funkce _malloc_dbg, viz _malloc_dbg.

Není nutné explicitně volat tyto funkce ve většině případů.Místo toho můžete definovat příznak _CRTDBG_MAP_ALLOC.Při _CRTDBG_MAP_ALLOC je definována, volání _dupenv_s a _wdupenv_s jsou mapovány na _dupenv_s_dbg a _wdupenv_s_dbg, resp. se blockType nastavena na _NORMAL_BLOCK.Proto není nutné explicitně volat tyto funkce, pokud chcete označit jako bloky haldy _CLIENT_BLOCK.Další informace o blokovaných typech naleznete v tématu typů bloků na ladění haldy.

Rutinní mapování obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definováno

_MBCS definováno

_UNICODE definováno

_tdupenv_s_dbg

_dupenv_s_dbg

_dupenv_s_dbg

_wdupenv_s_dbg

Požadavky

Rutina

Požadované záhlaví

_dupenv_s_dbg

<crtdbg.h>

_wdupenv_s_dbg

<crtdbg.h>

Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.

Příklad

// crt_dupenv_s_dbg.c
#include  <stdlib.h>
#include <crtdbg.h>

int main( void )
{
   char *pValue;
   size_t len;
   errno_t err = _dupenv_s_dbg( &pValue, &len, "pathext",
      _NORMAL_BLOCK, __FILE__, __LINE__ );
   if ( err ) return -1;
   printf( "pathext = %s\n", pValue );
   free( pValue );
   err = _dupenv_s_dbg( &pValue, &len, "nonexistentvariable",
      _NORMAL_BLOCK, __FILE__, __LINE__ );
   if ( err ) return -1;
   printf( "nonexistentvariable = %s\n", pValue );
   free( pValue ); // It's OK to call free with NULL
}

Výstup ukázky

pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)

Ekvivalent v rozhraní .NET Framework

System::Environment::GetEnvironmentVariable

Viz také

Referenční dokumentace

Řízení procesů a prostředí

Konstanty prostředí

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s