_dupenv_s
, _wdupenv_s
Ruft einen Wert aus der aktuellen Umgebung ab.
Wichtig
Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
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
);
Parameter
buffer
Puffer zum Speichern des Variablenwerts.
numberOfElements
Größe von buffer
.
varname
Umgebungsvariablenname.
Rückgabewert
Null bei Erfolg, ein Fehlercode, wenn ein Fehler auftritt.
Diese Funktionen überprüfen ihre Parameter; wenn buffer
oder varname
ist NULL
, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, legen die Funktionen errno
auf EINVAL
fest und geben EINVAL
zurück.
Wenn diese Funktionen nicht genügend Arbeitsspeicher zuordnen können, legen buffer
sie auf NULL
und numberOfElements
auf 0 fest und geben sie zurück ENOMEM
.
Hinweise
Die _dupenv_s
-Funktion sucht die Liste von Umgebungsvariablen für varname
. Wenn die Variable gefunden wird, ordnet _dupenv_s
einen Puffer zu und kopiert den Wert der Variablen in den Puffer. Die Adresse und die Länge des Puffers werden in buffer
und numberOfElements
zurückgegeben. Da er den Puffer selbst zuweist, _dupenv_s
bietet es eine bequemere Alternative zu getenv_s
, _wgetenv_s
.
Hinweis
Es liegt in der Verantwortung des Anrufprogramms, den Speicher durch Aufrufen free
freizugeben.
Wenn die Variable nicht gefunden wird, buffer
wird sie auf NULL
numberOfElements
0 festgelegt, und der Rückgabewert ist 0, da diese Situation nicht als Fehlerbedingung angesehen wird.
Wenn Sie nicht an der Größe des Puffers interessiert sind, können Sie dies übergeben NULL
numberOfElements
.
_dupenv_s
die Groß-/Kleinschreibung im Windows-Betriebssystem nicht beachtet wird. _dupenv_s
verwendet die Kopie der Umgebung, auf die die globale Variable _environ
verweist, um auf die Umgebung zuzugreifen. Eine Erläuterung finden Sie in den Anmerkungen in .getenv_s
_wgetenv_s
_environ
Der Wert in buffer
ist eine Kopie des Werts der Umgebungsvariablen. Das Ändern dieses Wertes hat keine Auswirkungen auf die Umgebung. Verwenden Sie die _putenv_s
Funktion , _wputenv_s
um den Wert einer Umgebungsvariable zu ändern.
_wdupenv_s
ist eine Breitzeichenversion von _dupenv_s
. Die Argumente von _wdupenv_s
sind Zeichenfolgen mit Breitzeichen. Die globale _wenviron
-Variable ist eine Breitzeichen-Version von _environ
. Weitere Informationen finden Sie in den Anmerkungen in _wenviron
getenv_s
_wgetenv_s
.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
TCHAR.H -Routine |
_UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tdupenv_s |
_dupenv_s |
_dupenv_s |
_wdupenv_s |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_dupenv_s |
<stdlib.h> |
_wdupenv_s |
<stdlib.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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)
Siehe auch
Prozess- und Umgebungskontrolle
Umweltkonstanten
_dupenv_s_dbg
, _wdupenv_s_dbg
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s