Freigeben über


_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 freefreizugeben.

Wenn die Variable nicht gefunden wird, buffer wird sie auf NULLnumberOfElements 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_sFunktion , _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 _wenvirongetenv_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