_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'environnementblockType
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