Condividi tramite


_searchenv_s, _wsearchenv_s

Cerca un file tramite percorsi d'ambiente. Queste versioni di _searchenv, _wsearchenv hanno miglioramenti nel campo della sicurezza, come descritto in Funzionalità di sicurezza in CRT.

Importante

Questa API non può essere utilizzata nelle applicazioni che vengono eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW.

errno_t _searchenv_s(
   const char *filename,
   const char *varname,
   char *pathname,
   size_t numberOfElements
);
errno_t _wsearchenv_s(
   const wchar_t *filename,
   const wchar_t *varname,
   wchar_t *pathname,
   size_t numberOfElements
);
template <size_t size>
errno_t _searchenv_s(
   const char *filename,
   const char *varname,
   char (&pathname)[size]
); // C++ only
template <size_t size>
errno_t _wsearchenv_s(
   const wchar_t *filename,
   const wchar_t *varname,
   wchar_t (&pathname)[size]
); // C++ only

Parametri

  • [in] filename
    Nome del file da ricercare.

  • [in] varname
    Ambiente da cercare.

  • [out] pathname
    Buffer per archiviare il percorso completo.

  • [in] numberOfElements
    Dimensione del buffer pathname.

Valore restituito

Zero se ha esito positivo; un codice di errore in caso di errore.

Se filename è una stringa vuota, il valore di ritorno è ENOENT.

Condizioni di errore

filename

varname

pathname

numberOfElements

Valore restituito

Contenuto di pathname.

any

any

NULL

any

EINVAL

n/d

NULL

any

any

any

EINVAL

non modificato

any

any

any

<= 0

EINVAL

non modificato

Se tutte queste condizioni di errore si verificano, il gestore di parametri non valido viene invocato, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni impostano errno a EINVAL e restituiscono EINVAL.

Note

La routine _searchenv_s cerca il file di destinazione nel dominio specificato. La variabile varname può essere qualsiasi ambiente o variabile definita dall'utente che specifica un elenco di percorsi di directory, come PATH, LIB e INCLUDE. Poiché _searchenv_s fa distinzione tra maiuscole e minuscole, varname deve corrispondere alla variabile d'ambiente. Se varname non corrisponde al nome di una variabile d'ambiente definita nell'ambiente del processo, la funzione restituisce zero e la variabile pathname resterà invariata.

La routine cerca innanzitutto il file nella cartella di lavoro corrente. Se non trova il file, cerca quindi nelle directory specificate dalla variabile d'ambiente. Se il file di destinazione è in una di quelle directory, il percorso appena creato viene copiato in pathname. Se il file filename non viene trovato, pathname contiene una stringa vuota con terminazione null.

Il buffer pathname deve essere lungo almeno _MAX_PATH caratteri per contenere l'intera lunghezza del nome del percorso costruito. In caso contrario, _searchenv_s potrebbe sovraccaricare il buffer pathname determinando un comportamento imprevisto.

_wsearchenv_s è una versione a caratteri estesi di _searchenv_s; gli argomenti per _wsearchenv_s sono stringhe a caratteri estesi. _wsearchenv_s e _searchenv_s si comportano in modo identico in caso contrario.

In C++, l'utilizzo di queste funzioni è semplificato dagli overload dei modelli; gli overload possono dedurre la lunghezza del buffer automaticamente (che elimina la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti, quelle non sicure alle più recenti e le controparti sicure. Per ulteriori informazioni, vedere Overload di modelli sicuri.

Mapping di routine su testo generico

Routine Tchar.h

_UNICODE e _MBCS non definiti

_MBCS definito

_UNICODE definito

_tsearchenv_s

_searchenv_s

_searchenv_s

_wsearchenv_s

Requisiti

Routine

Intestazione obbligatoria

_searchenv_s

<stdlib.h>

_wsearchenv_s

<stdlib.h> o <wchar.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.

Esempio

// crt_searchenv_s.c
/* This program searches for a file in
 * a directory specified by an environment variable.
 */

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char pathbuffer[_MAX_PATH];
   char searchfile[] = "CL.EXE";
   char envvar[] = "PATH";
   errno_t err;

   /* Search for file in PATH environment variable: */
   err = _searchenv_s( searchfile, envvar, pathbuffer, _MAX_PATH );
   if (err != 0)
   {
      printf("Error searching the path. Error code: %d\n", err);
   }
   if( *pathbuffer != '\0' )
      printf( "Path for %s:\n%s\n", searchfile, pathbuffer );
   else
      printf( "%s not found\n", searchfile );
}
  

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Controllo Directory

_searchenv, _wsearchenv

getenv, _wgetenv

_putenv, _wputenv