_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 buffer
NULL
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 NULL
su 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_s
vedere 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_s
funzione , _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_s
vedere 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