_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 unter CRT-Funktionen nicht mit /ZW unterstützt.
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 varnameNULL ist, wird der Handler für ungültige Parameter aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, legen die Funktionen errno auf EINVAL fest und geben EINVAL zurück.
Wenn diese Funktionen nicht genug Arbeitsspeicher zuordnen können, legen sie buffer auf NULL und numberOfElements auf 0 fest und geben ENOMEM zurück.
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. Durch die Selbstzuweisung des Puffers stellt _dupenv_s eine zweckmäßigere Alternative zu getenv_s, _wgetenv_s dar.
Hinweis
Das aufrufende Programm ist dafür zuständig, den Arbeitsspeicher durch Aufruf von Frei zu leeren.
Wenn die Variable nicht gefunden wird, dann werden buffer auf NULL und numberOfElements auf 0 festgelegt, und der Rückgabewert ist 0, da diese Situation nicht als Fehlerzustand betrachtet wird.
Wenn die Größe des Puffers nicht relevant ist, können Sie NULL für numberOfElements übergeben.
Für _dupenv_s wird im Windows-Betriebssystem die Groß-/Kleinschreibung nicht beachtet. _dupenv_s verwendet die Kopie der Umgebung, auf die die globale Variable _environ verweist, um auf die Umgebung zuzugreifen. Unter den Hinweisen in getenv_s, _wgetenv_s finden Sie weitere Informationen zu _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 Funktion _putenv_s, _wputenv_s, um den Wert einer Umgebungsvariablen 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. Unter den Hinweisen in getenv_s, _wgetenv_sfinden Sie weitere Informationen zu _wenviron.
Zuordnung 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
}
Beispielausgabe
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
.NET Framework-Entsprechung
System::Environment::GetEnvironmentVariable