Partager via


_dupenv_s, _wdupenv_s

Obtient une valeur à partir de l'environnement actuel.

Important

Cette API ne peut pas être utilisée dans les applications qui s’exécutent dans le Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.

Syntaxe

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
);

Paramètres

buffer
Mémoire tampon pour stocker la valeur de la variable.

numberOfElements
Taille de la buffer.

varname
Nom de la variable d'environnement.

Valeur retournée

Zéro en cas de réussite, code d'erreur en cas d'échec.

Ces fonctions valident leurs paramètres ; si buffer ou varname est NULL, le gestionnaire de paramètres non valide est appelé comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, les fonctions affectent à errno la valeur EINVAL et retournent EINVAL.

Si ces fonctions ne peuvent pas allouer suffisamment de mémoire, elles sont définies buffer sur NULL et numberOfElements sur 0, et retournent ENOMEM.

Notes

La fonction _dupenv_s recherche varname dans la liste des variables d'environnement. Si la variable est trouvée, _dupenv_s alloue une mémoire tampon et copie la valeur de la variable dans la mémoire tampon. L'adresse et la longueur de la mémoire tampon sont retournées dans buffer et numberOfElements. Parce qu’il alloue la mémoire tampon elle-même, _dupenv_s offre une alternative plus pratique à getenv_s, _wgetenv_s.

Remarque

C’est la responsabilité du programme appelant de libérer la mémoire en appelant free.

Si la variable est introuvable, buffer elle est définie NULLnumberOfElements sur 0 et la valeur de retour est 0, car cette situation n’est pas considérée comme une condition d’erreur.

Si vous n’êtes pas intéressé par la taille de la mémoire tampon, vous pouvez passer NULL pour numberOfElements.

_dupenv_s ne respecte pas la casse dans le système d’exploitation Windows. _dupenv_s utilise la copie de l'environnement vers lequel la variable globale _environ pointe pour accéder à l'environnement. Consultez les remarques dans getenv_s, _wgetenv_s pour une discussion sur _environ.

La valeur dans buffer est une copie de la valeur de la variable d'environnement ; sa modification n'a aucun impact sur l'environnement. Utilisez la _putenv_sfonction , _wputenv_s pour modifier la valeur d’une variable d’environnement.

_wdupenv_s est une version à caractères larges de _dupenv_s ; les arguments de _wdupenv_s sont des chaînes à caractères larges. La variable globale _wenviron est une version à caractères larges de _environ. Pour plus d’informations, consultez les remarques dans .getenv_s_wgetenv_s _wenviron

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Mappages de routines de texte générique

Routine TCHAR.H _UNICODE et _MBCS non définis _MBCS défini _UNICODE défini
_tdupenv_s _dupenv_s _dupenv_s _wdupenv_s

Spécifications

Routine En-tête requis
_dupenv_s <stdlib.h>
_wdupenv_s <stdlib.h> ou <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// 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)

Voir aussi

Processus et contrôle d’environnement
Constantes environnementales
_dupenv_s_dbg, _wdupenv_s_dbg
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s