Share via


_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

Siehe auch

Referenz

Prozess- und Umgebungssteuerung

Umgebungskonstanten

_dupenv_s_dbg, _wdupenv_s_dbg

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s