Udostępnij za pośrednictwem


_dupenv_s_dbg, _wdupenv_s_dbg

Pobieranie wartości z bieżącego środowiska. Wersje _dupenv_s, _wdupenv_s że przydzielić pamięci z _malloc_dbg dodatkowe informacje debugowania.

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
    Bufor do przechowywania wartości zmiennej.

  • numberOfElements
    Rozmiar buffer.

  • varname
    Nazwa zmiennej środowiskowej.

  • blockType
    Zażądał typu blok pamięci: _CLIENT_BLOCK lub _NORMAL_BLOCK.

  • filename
    Wskaźnik myszy na nazwę pliku źródłowego lub NULL.

  • linenumber
    Numer wiersza na plik źródłowy lub NULL.

Wartość zwracana

Zero, jeśli operacja się powiedzie; w przeciwnym razie, kod błędu.

Te funkcje sprawdzają poprawność parametrów; jeśli buffer lub varname jest NULL niewłaściwym elementem obsługi parametrów, zgodnie z opisem w temacie Sprawdzanie poprawności parametruJeśli wykonanie może być kontynuowane, funkcje ustawiają errno jako EINVAL i zwracają EINVAL.

Jeśli te funkcje nie mogą przydzielić wystarczającej ilości pamięci, ustawiają buffer jako NULL i numberOfElements jako 0 i zwracają ENOMEM.

Uwagi

_dupenv_s_dbg i _wdupenv_s_dbg funkcje są identyczne z _dupenv_s i _wdupenv_s poza tym, kiedy _DEBUG jest zdefiniowany, tych funkcji należy użyć wersji programu debug malloc, _malloc_dbg, aby przydzielić pamięci dla wartości zmiennej środowiskowej.Aby uzyskać informacje dotyczące debugowania funkcji _malloc_dbg, zobacz _malloc_dbg.

Nie trzeba jawnie wywołana w większości przypadków te funkcje.Zamiast tego można zdefiniować flagę _CRTDBG_MAP_ALLOC.Gdy _CRTDBG_MAP_ALLOC jest zdefiniowany, wzywa do _dupenv_s i _wdupenv_s są mapowane ponownie do _dupenv_s_dbg i _wdupenv_s_dbg, odpowiednio, z blockType ustawiona na _NORMAL_BLOCK.Dzięki temu, nie trzeba jawnie wywołana tych funkcji, chyba że chcesz oznaczyć bloki sterty jako _CLIENT_BLOCK.Aby uzyskać więcej informacji dotyczących typów bloku, zobacz typów bloków na stercie debugowania.

Rutynowe mapowania zwykłego tekstu

Procedura Tchar.h

_UNICODE & _MBCS nie zdefiniowano

_MBCS zdefiniowano

_UNICODE zdefiniowany

_tdupenv_s_dbg

_dupenv_s_dbg

_dupenv_s_dbg

_wdupenv_s_dbg

Wymagania

Procedura

Wymagany nagłówek

_dupenv_s_dbg

<crtdbg.h>

_wdupenv_s_dbg

<crtdbg.h>

Dodatkowe informacje o zgodności – zobacz: Zgodność we Wprowadzeniu.

Przykład

// 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
}

Przykładowe dane wyjściowe

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

Odpowiednik w programie .NET Framework

zmienna środowiskowa pobierania systemu

Zobacz też

Informacje

Procedury kontroli środowiska

Stałe środowiska

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s