_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 l'argomento relativo alle funzioni CRT non supportate con /ZW.
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 propri parametri. Se buffer o varname è NULL, sarà richiamato il gestore di parametri non validi come descritto in Convalida dei parametri. Se l'esecuzione può continuare, le funzioni impostano errno su EINVAL e restituiscono EINVAL.
Se queste funzioni non riescono ad allocare memoria sufficiente, impostano buffer su NULL e numberOfElements su 0, quindi restituiscono ENOMEM.
Note
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. Allocando il buffer stesso, _dupenv_s offre un'alternativa più pratica a getenv_s, _wgetenv_s.
Nota
È responsabilità del programma chiamante liberare la memoria chiamando disponibili.
Se la variabile non viene trovata, buffer viene impostato su NULL, numberOfElements viene impostato su 0 e il valore restituito è 0 perché questa situazione non viene considerata come una condizione di errore.
Se non si è interessati alla dimensione del buffer è possibile passare NULL per numberOfElements.
Per _dupenv_s non viene rilevata la 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. Vedere la sezione Note in getenv_s, _wgetenv_s per informazioni su _environ.
Il valore in buffer è una copia del valore della variabile di ambiente. Modificarlo non influisce sull'ambiente. Per modificare il valore di una variabile di ambiente, usare la funzione _putenv_s, _wputenv_s.
_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. Vedere la sezione Note in getenv_s, _wgetenv_s per altre informazioni su _wenviron.
Mapping di routine di testo generico
Routine TCHAR.H |
_UNICODE e _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tdupenv_s |
_dupenv_s |
_dupenv_s |
_wdupenv_s |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_dupenv_s |
<stdlib.h> |
_wdupenv_s |
<stdlib.h> o <wchar.h> |
Per altre informazioni sulla compatibilità, vedere 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
}
Esempio di output
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Equivalente .NET Framework
System::Environment::GetEnvironmentVariable