_dupenv_s, _wdupenv_s

Ottiene un valore dall'ambiente corrente.

Importante

Non è possibile usare questa API nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).

Sintassi

errno_t _dupenv_s(
   char **buffer,
   size_t *numberOfElements,
   const char *varname
);
errno_t _wdupenv_s(
   wchar_t **buffer,
   size_t *numberOfElements,
   const wchar_t *varname
);

Parametri

buffer
Buffer per l'archiviazione del valore della variabile.

numberOfElements
Dimensioni di buffer.

varname
Nome della variabile di ambiente.

Valore restituito

Zero se eseguita correttamente, un codice di errore se non eseguita correttamente.

Queste funzioni convalidano i relativi parametri; se buffer o varname è NULL, il gestore di parametri non validi viene richiamato come descritto in Convalida dei parametri. Se l'esecuzione può continuare, le funzioni impostano errno su EINVAL e restituiscono EINVAL.

Se queste funzioni non possono allocare memoria sufficiente, impostano su bufferNULL e numberOfElements su 0 e restituiscono ENOMEM.

Osservazioni:

La funzione _dupenv_s cerca varname nell'elenco delle variabili di ambiente. Se la variabile viene trovata, _dupenv_s alloca un buffer e copia il valore della variabile nel buffer. L'indirizzo e la lunghezza del buffer vengono restituiti in buffer e numberOfElements. Poiché alloca il buffer stesso, _dupenv_s offre un'alternativa più conveniente a getenv_s, _wgetenv_s.

Nota

È responsabilità del programma chiamante liberare la memoria chiamando free.

Se la variabile non viene trovata, buffer viene impostata su , numberOfElements è impostata NULLsu 0 e il valore restituito è 0 perché questa situazione non viene considerata una condizione di errore.

Se non si è interessati alle dimensioni del buffer, è possibile passare NULL per numberOfElements.

_dupenv_s non fa distinzione tra maiuscole e minuscole nel sistema operativo Windows. _dupenv_s usa la copia dell'ambiente a cui fa riferimento la variabile globale _environ per accedere all'ambiente. Per una descrizione di , _wgetenv_svedere la sezione Osservazioni in getenv_s._environ

Il valore in buffer è una copia del valore della variabile di ambiente. Modificarlo non influisce sull'ambiente. Usare la _putenv_sfunzione , _wputenv_s per modificare il valore di una variabile di ambiente.

_wdupenv_s è una versione a caratteri wide di _dupenv_s. Gli argomenti di _wdupenv_s sono stringhe a caratteri wide. La variabile globale _wenviron è una versione a caratteri wide di _environ. Per altre informazioni su , _wgetenv_svedere le osservazioni in getenv_s._wenviron

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Mapping di routine di testo generico

TCHAR.H Routine _UNICODE e _MBCS non definito _MBCS Definito _UNICODE Definito
_tdupenv_s _dupenv_s _dupenv_s _wdupenv_s

Requisiti

Ciclo Intestazione obbligatoria
_dupenv_s <stdlib.h>
_wdupenv_s <stdlib.h> oppure <wchar.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

// crt_dupenv_s.c
#include  <stdlib.h>

int main( void )
{
   char *pValue;
   size_t len;
   errno_t err = _dupenv_s( &pValue, &len, "pathext" );
   if ( err ) return -1;
   printf( "pathext = %s\n", pValue );
   free( pValue );
   err = _dupenv_s( &pValue, &len, "nonexistentvariable" );
   if ( err ) return -1;
   printf( "nonexistentvariable = %s\n", pValue );
   free( pValue ); // It's OK to call free with NULL
}
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)

Vedi anche

Processo e controllo dell'ambiente
Costanti ambientali
_dupenv_s_dbg, _wdupenv_s_dbg
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s