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 d' buffer.

  • varname
    Nom de la variable d'environnement.

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

  • filename
    Pointeur vers le nom du fichier source ou d' NULL.

  • linenumber
    numéro de ligne dans le fichier source ou l' NULL.

Valeur de retour

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

ces fonctions valident leurs paramètres ; si buffer ou varname est NULL, le gestionnaire de paramètre non valide est appelé comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, errno défini par fonctions à EINVAL et à EINVALde retour.

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

Notes

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

vous n'avez pas besoin d'appeler ces fonctions explicitement dans la plupart des cas.À la place, vous pouvez définir la balise _CRTDBG_MAP_ALLOC.Lorsque _CRTDBG_MAP_ALLOC est défini, les appels à _dupenv_set l' _wdupenv_s sont remappés à _dupenv_s_dbg et à _wdupenv_s_dbg, respectivement, avec blockType défini à _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 bloc sur le tas de débogage.

mappages de routines de texte générique

routine de TCHAR.H

_MBCS & de _UNICODE non défini

_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 des informations de compatibilité supplémentaires, 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 : : environnement : : GetEnvironmentVariable

Voir aussi

Référence

Processus et contrôle ambiance

Constantes d'environnement

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s