Udostępnij za pośrednictwem


_dupenv_s_dbg, _wdupenv_s_dbg

Pobieranie wartości z bieżącego środowiska.Wersje _dupenv_s, _wdupenv_s , przydzielić pamięci z _malloc_dbg o dostarczenie dodatkowych informacji 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
    Size of buffer.

  • varname
    Nazwa zmiennej środowiskowej.

  • blockType
    Żądanie typu blok pamięci: _CLIENT_BLOCK lub _NORMAL_BLOCK.

  • filename
    Wskaźnik do nazwy pliku źródłowego lub NULL.

  • linenumber
    Numer w pliku źródłowym lub NULL.

Wartość zwracana

Ustawić zero na sukces, kod błędu w przypadku awarii.

Te funkcje sprawdzania poprawności ich parametrów; Jeśli buffer lub varname jest NULL, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ustawić funkcji errno do EINVAL i zwraca EINVAL.

Jeśli te funkcje nie może przydzielić wystarczającej ilości pamięci, ustaw one buffer do NULL i numberOfElements 0 i return ENOMEM.

Uwagi

_dupenv_s_dbg i _wdupenv_s_dbg funkcje są identyczne z _dupenv_s i _wdupenv_s z wyjątkiem, gdy _DEBUG jest zdefiniowany, funkcje te korzystają z wersji do debugowania funkcja malloc, _malloc_dbg, aby przydzielić pamięci dla wartości zmiennej środowiskowej.Aby uzyskać informacje dotyczące debugowania cechy _malloc_dbg, zobacz _malloc_dbg.

Nie trzeba jawnie wywoływać te funkcje w większości przypadków.Zamiast tego można zdefiniować flaga _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ływać te funkcje, chyba że chcesz oznaczyć bloki sterty jako _CLIENT_BLOCK.Aby uzyskać więcej informacji na temat typów bloku, zobacz Typy bloki na stercie debugowania.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rutynowe H

_UNICODE & Nie zdefiniowano _MBCS

_MBCS, definicja

_UNICODE, definicja

_tdupenv_s_dbg

_dupenv_s_dbg

_dupenv_s_dbg

_wdupenv_s_dbg

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

_dupenv_s_dbg

<crtdbg.h>

_wdupenv_s_dbg

<crtdbg.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności 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

System::Environment::GetEnvironmentVariable

Zobacz też

Informacje

Proces i kontroli środowiska

Stałe środowiska

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s