Udostępnij przez


_dupenv_s, _wdupenv_s

Pobiera wartość z bieżącego środowiska.

Ważne

Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.

Składnia

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

numberOfElements
bufferRozmiar .

varname
Nazwa zmiennej środowiskowej.

Wartość zwracana

Zero w przypadku powodzenia, kod błędu w przypadku błędu.

Te funkcje weryfikują swoje parametry; jeśli buffer lub varname ma NULLwartość , wywoływana jest nieprawidłowa procedura obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcje ustawione errno na EINVAL i zwracają wartość EINVAL.

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

Uwagi

Funkcja _dupenv_s wyszukuje listę zmiennych środowiskowych dla varnameelementu . Jeśli zmienna zostanie znaleziona, _dupenv_s przydzieli bufor i skopiuje wartość zmiennej do buforu. Adres i długość buforu są zwracane w polach buffer i numberOfElements. Ponieważ przydziela sam bufor, _dupenv_s zapewnia wygodniejsze alternatywy dla getenv_selementu , _wgetenv_s.

Uwaga

Jest to odpowiedzialność programu wywołującego za zwolnienie pamięci przez wywołanie metody free.

Jeśli zmienna nie zostanie znaleziona, buffer jest ustawiona na wartość , numberOfElements jest ustawiona na NULLwartość 0, a zwracana wartość to 0, ponieważ ta sytuacja nie jest uważana za warunek błędu.

Jeśli nie interesuje Cię rozmiar buforu, możesz przekazać NULL wartość .numberOfElements

_dupenv_s nie uwzględnia wielkości liter w systemie operacyjnym Windows. _dupenv_s używa kopii środowiska wskazywanej przez zmienną globalną _environ w celu uzyskania dostępu do środowiska. Zobacz uwagi w temacie getenv_s, _wgetenv_s aby zapoznać się z omówieniem elementu _environ.

Wartość w buffer pliku jest kopią wartości zmiennej środowiskowej; modyfikowanie jej nie ma wpływu na środowisko. _putenv_sUżyj funkcji , _wputenv_s aby zmodyfikować wartość zmiennej środowiskowej.

_wdupenv_s jest wersją szerokoznakową ; _dupenv_sargumenty to _wdupenv_s ciągi szerokoznakowe. Zmienna _wenviron globalna jest wersją o szerokim znaku _environ. Zobacz uwagi w temacie getenv_s, _wgetenv_s aby uzyskać więcej informacji na temat _wenviron.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

TCHAR.H Rutynowych _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_tdupenv_s _dupenv_s _dupenv_s _wdupenv_s

Wymagania

Procedura Wymagany nagłówek
_dupenv_s <stdlib.h>
_wdupenv_s <stdlib.h> lub <wchar.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

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

Zobacz też

Kontrola procesu i środowiska
Stałe środowiskowe
_dupenv_s_dbg, _wdupenv_s_dbg
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s