_dupenv_s_dbg, _wdupenv_s_dbg
Ottenere un valore dall'ambiente corrente.versioni di _dupenv_s, _wdupenv_s che alloca memoria con differenze per fornire informazioni aggiuntive di debug.
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
);
Parametri
buffer
Buffer per archiviare il valore della variabile.numberOfElements
dimensione di buffer.varname
Nome della variabile di ambiente.blockType
Tipo richiesto del blocco di memoria: _CLIENT_BLOCK o _NORMAL_BLOCK.filename
Puntatore al nome del file di origine o NULL.linenumber
Numero di riga nel file di origine o NULL.
Valore restituito
Zero su esito positivo, un codice di errore in caso di errore.
Queste funzioni convalidano i relativi parametri; se buffer o varname viene NULL, il gestore non valido di parametro viene richiamato come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, le funzioni impostate errno in EINVAL e restituiscono EINVAL.
Se queste funzioni non possono allocare memoria sufficiente, impostare buffer in NULL e numberOfElements a 0 e ritorno ENOMEM.
Note
_dupenv_s_dbg e _wdupenv_s_dbg le funzioni sono identiche a _dupenv_s e _wdupenv_s con la differenza che, quando _DEBUG viene definito, queste funzioni utilizzano la versione di debug di malloc, differenze, per allocare memoria per il valore della variabile di ambiente.Per informazioni sulle funzionalità di debug _malloc_dbg, vedere differenze.
Non è necessario chiamare queste funzioni in modo esplicito nella maggior parte dei casi.In alternativa, è possibile definire il flag _CRTDBG_MAP_ALLOC.quando _CRTDBG_MAP_ALLOC viene definito, le chiamate a _dupenv_se _wdupenv_s riassociata a _dupenv_s_dbg e _wdupenv_s_dbg, rispettivamente, con blockType impostare su _NORMAL_BLOCK.Pertanto, non è necessario chiamare queste funzioni in modo esplicito a meno che non si desideri contrassegnare i blocchi dell'heap come _CLIENT_BLOCK.per ulteriori informazioni sui tipi di blocco, vedere Tipi di blocchi sull'heap di debug.
Mapping di routine a testo generico
routine di TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Requisiti
routine |
Intestazione di associazione |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.
Esempio
// 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
}
Esempio di output
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Equivalente .NET Framework
System:: ambiente:: GetEnvironmentVariable