_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