_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 NULL
numberOfElements
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_s
fonction , _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