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, voir Fonctions CRT non prises en charge avec /ZW.

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 de retour

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

Ces fonctions valident leurs paramètres ; si buffer ou varname a la valeur NULL, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. 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 affectent à buffer la valeur NULL et à numberOfElements la valeur 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. En allouant la mémoire tampon elle-même, _dupenv_s offre une alternative plus pratique à getenv_s, _wgetenv_s.

Notes

Il revient au programme appelant de libérer la mémoire en appelant libre.

Si la variable est introuvable, buffer a la valeur NULL, numberOfElements a la valeur 0, et la valeur de retour est 0, car cette situation n'est pas considérée comme étant une condition d'erreur.

Si la taille de la mémoire tampon ne vous intéresse pas, vous pouvez affecter NULL à 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. Voir la section Notes dans getenv_s, _wgetenv_s pour plus d'informations 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 fonction _putenv_s, _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. Voir la section Notes dans getenv_s, _wgetenv_s pour plus d'informations sur _wenviron.

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

Configuration requise

Routine

En-tête requis

_dupenv_s

<stdlib.h>

_wdupenv_s

<stdlib.h> ou <wchar.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.

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
}

Résultat de l'exemple

pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)

Équivalent .NET Framework

System::Environment::GetEnvironmentVariable

Voir aussi

Référence

Contrôle de processus et d'environnement

Constantes d'environnement

_dupenv_s_dbg, _wdupenv_s_dbg

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s