Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 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