_searchenv_s, _wsearchenv_s
Buscar un archivo mediante rutas del entorno.Éstas son versiones de _searchenv, _wsearchenv con mejoras de seguridad como se describe en Características de seguridad en CRT.
Importante |
---|
Esta API no se puede utilizar en las aplicaciones que se ejecutan en tiempo de ejecución de Windows.Para obtener más información, vea Funciones CRT no compatibles 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
Parámetros
[in] filename
Nombre del archivo que se va a buscar.[in] varname
Entorno para buscar.[out] pathname
Búfer para almacenar la ruta completa.[in] numberOfElements
Tamaño del búfer de pathname.
Valor devuelto
Cero si correctamente; un código de error del error.
Si filename es una cadena vacía, el valor devuelto es ENOENT.
Condiciones de error
filename |
varname |
pathname |
numberOfElements |
Valor devuelto |
Contenido de pathname |
---|---|---|---|---|---|
any |
any |
NULL |
any |
EINVAL |
no disponible |
NULL |
any |
any |
any |
EINVAL |
no cambiado |
any |
any |
any |
<= 0 |
EINVAL |
no cambiado |
Si cualquiera de estas condiciones de error se, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, este errno establecido funciones a EINVAL y a EINVAL return.
Comentarios
Las búsquedas de la rutina de _searchenv_s para el archivo de destino en el dominio especificado.La variable de varname puede ser cualquier entorno o variable definida por el usuario que especifica una lista de rutas de acceso de directorio, como PATH, LIB, y INCLUDE.Dado que _searchenv_s distingue entre mayúsculas y minúsculas, varname debe coincidir con el caso de la variable de entorno.Si no coincide con varname el nombre de una variable de entorno definida en el entorno del proceso, la función devuelve cero y la variable de pathname no cambia.
La rutina busca primero el archivo en el directorio de trabajo actual.Si no encuentra el archivo, busca después a través de los directorios especificados por la variable de entorno.Si el archivo de destino está en uno de esos directorios, la ruta creada recientemente se copia en pathname.Si el archivo de filename no se encuentra, pathname contiene una cadena terminada en null vacía.
El búfer de pathname debe ser por lo menos caracteres de _MAX_PATH long para alojar el entero del nombre de ruta construido.Si no, _searchenv_s puede saturar el búfer de pathname da como resultado un comportamiento inesperado.
_wsearchenv_s es una versión con caracteres anchos de _searchenv_s; los argumentos de _wsearchenv_s son cadenas de caracteres._wsearchenv_s y _searchenv_s se comportan exactamente igual de otra manera.
En C++, mediante estas funciones es simplificado con sobrecargas de plantilla; las sobrecargas pueden deducir la longitud de búfer automáticamente (que elimina la necesidad de especificar un argumento de tamaño) y automáticamente pueden reemplazar anterior, funciones de no Secure con sus más recientes, seguros homólogos.Para obtener más información, vea Sobrecargas de plantilla de seguridad.
Asignaciones de la rutina de Genérico- texto
Rutina de Tchar.h |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tsearchenv_s |
_searchenv_s |
_searchenv_s |
_wsearchenv_s |
Requisitos
Rutina |
Encabezado necesario |
---|---|
_searchenv_s |
<stdlib.h> |
_wsearchenv_s |
<stdlib.h> o <wchar.h> |
Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.
Ejemplo
// 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 en .NET Framework
No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.