_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
buffer
Rozmiar .
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 NULL
wartość , 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 varname
elementu . 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_s
elementu , _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 NULL
wartość 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_s
Użyj funkcji , _wputenv_s
aby zmodyfikować wartość zmiennej środowiskowej.
_wdupenv_s
jest wersją szerokoznakową ; _dupenv_s
argumenty 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 rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_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