Partager via


_dupenv_s_dbg, _wdupenv_s_dbg

Obtenir une valeur de l'environnement actuel. Versions de _dupenv_s, _wdupenv_s qui allouent la mémoire avec _malloc_dbg pour fournir des informations de débogage supplémentaires.

errno_t _dupenv_s_dbg(
   char **buffer,
   size_t *numberOfElements,
   const char *varname,
   int blockType,
   const char *filename,
   int linenumber
);
errno_t _wdupenv_s_dbg(
   wchar_t **buffer,
   size_t * numberOfElements,
   const wchar_t *varname,
   int blockType,
   const char *filename,
   int linenumber
);

Paramètres

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

  • numberOfElements
    Taille du buffer.

  • varname
    nom de la variable d'environnement

  • blockType
    Type de bloc de mémoire demandé : _CLIENT_BLOCK ou _NORMAL_BLOCK.

  • filename
    Pointeur du nom du fichier source ou NULL.

  • linenumber
    Numéro de ligne dans le fichier source ou NULL.

Valeur de retour

Zéro si l'opération a réussi ; code d'erreur en cas de échec.

Ces fonctions valident leurs paramètres ; si buffer ou varname sont 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 définissent errno avec la valeur EINVAL et retournent EINVAL.

Si ces fonctions ne peuvent pas allouer suffisamment de mémoire, ils définissent buffer à NULL et numberOfElements à 0, et retournent ENOMEM.

Notes

Les fonctions _dupenv_s_dbg et _wdupenv_s_dbg sont identiques à _dupenv_s et _wdupenv_s mais lorsque _DEBUG est défini, ces fonctions utilisent la version Debug malloc, _malloc_dbg, pour allouer de la mémoire à la variable d'environnement. Pour plus d'informations sur les fonctionnalités de débogage de _malloc_dbg, consultez _malloc_dbg.

Vous n'avez pas besoin d'appeler ces fonctions explicitement dans la plupart des cas. À la place, il vous est possible d'affecter l'indicateur _CRTDBG_MAP_ALLOC. Lorsque _CRTDBG_MAP_ALLOC est défini, les appels à _dupenv_s et l'_wdupenv_s sont remappés à _dupenv_s_dbg et _wdupenv_s_dbg, respectivement, avec blockType à la valeur _NORMAL_BLOCK. Ainsi, vous n'avez pas besoin d'appeler ces fonctions explicitement sauf si vous souhaitez marquer les blocs de tas comme _CLIENT_BLOCK. Pour plus d'informations sur les types de bloc, consultez Types de blocs sur le tas de débogage.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_tdupenv_s_dbg

_dupenv_s_dbg

_dupenv_s_dbg

_wdupenv_s_dbg

Configuration requise

Routine

En-tête requis

_dupenv_s_dbg

<crtdbg.h>

_wdupenv_s_dbg

<crtdbg.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Exemple

// crt_dupenv_s_dbg.c
#include  <stdlib.h>
#include <crtdbg.h>

int main( void )
{
   char *pValue;
   size_t len;
   errno_t err = _dupenv_s_dbg( &pValue, &len, "pathext",
      _NORMAL_BLOCK, __FILE__, __LINE__ );
   if ( err ) return -1;
   printf( "pathext = %s\n", pValue );
   free( pValue );
   err = _dupenv_s_dbg( &pValue, &len, "nonexistentvariable",
      _NORMAL_BLOCK, __FILE__, __LINE__ );
   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

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s