Condividi tramite


_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

Vedere anche

Riferimenti

Processo e controllo ambiente

Costanti ambientali

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s