Compartilhar via


_searchenv_s, _wsearchenv_s

Procura um arquivo usando caminhos do ambiente. Essas versões de _searchenv, _wsearchenv têm aprimoramentos de segurança, como descrito em Recursos de segurança no CRT.

Importante

Esta API não pode ser usada em aplicativos que executam no Tempo de Execução do Windows.Para obter mais informações, consulte Funções CRT sem suporte pelo /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

  • [entrada] filename
    Nome do arquivo a ser pesquisado.

  • [entrada] varname
    Ambiente a ser pesquisado.

  • [saída] pathname
    Buffer para armazenar o caminho completo.

  • [entrada] numberOfElements
    O tamanho do buffer pathname.

Valor de retorno

Zero se tiver êxito; um código de erro em falha.

Se filename for uma cadeia de caracteres vazia, o valor de retorno será ENOENT.

Condições de erro

filename

varname

pathname

numberOfElements

Valor de retorno

Conteúdo de pathname

any

any

NULL

any

EINVAL

n/d

NULL

any

any

any

EINVAL

não alterado

any

any

any

<= 0

EINVAL

não alterado

Se qualquer uma das condições de erro ocorrer, o manipulador de parâmetro inválido será chamado, conforme descrito em Validação do parâmetro. Se a execução puder continuar, essas funções definirão errno como EINVAL e retornarão EINVAL.

Comentários

A rotina _searchenv_s pesquisa o arquivo de destino no domínio especificado. A variável varname pode ser qualquer ambiente ou variável definida pelo usuário que especifica uma lista de caminhos de diretório, como PATH, LIB e INCLUDE. Como _searchenv_s diferencia maiúsculas de minúsculas, varname deve corresponder ao caso de variável de ambiente. Se varname não corresponder ao nome de uma variável de ambiente definida no ambiente do processo, a função retorna zero e a variável de pathname é inalterada.

A rotina procura primeiro o arquivo no diretório de trabalho atual. Se ele não encontrar o arquivo, ele procurará nos diretórios especificados pela variável de ambiente. Se o arquivo de destino estiver em um desses diretórios, o caminho recém-criado é copiado para pathname. Se o arquivo de filename não for encontrado, pathname contém uma cadeia de caracteres vazia terminada em nulo.

O buffer pathname deve ter pelo menos _MAX_PATH caracteres para acomodar o tamanho total do nome de caminho construído. Do contrário, _searchenv_s pode ocasionar um estouro do buffer pathname resultando em um comportamento inesperado.

_wsearchenv_s é uma versão de caractere largo de _searchenv_s; os argumentos para _wsearchenv_s são cadeias de caractere amplo. Caso contrário, _wsearchenv_s e _searchenv_s, ao contrário, se comportam de forma idêntica.

No C++, o uso dessas funções é simplificado por sobrecargas de modelo; as sobrecargas podem interpretar o tamanho do buffer automaticamente (eliminando a necessidade de especificar um argumento de tamanho) e podem substituir automaticamente as funções menos seguras mais antigas por correspondentes mais seguras e mais recentes. Para obter mais informações, consulte Sobrecargas de modelo seguras.

Mapeamentos da rotina de texto genérico

Rotina Tchar.h

_UNICODE e _MBCS não definidos

_MBCS definido

_UNICODE definido

_tsearchenv_s

_searchenv_s

_searchenv_s

_wsearchenv_s

Requisitos

Rotina

Cabeçalho necessário

_searchenv_s

<stdlib.h>

_wsearchenv_s

<stdlib.h> ou <wchar.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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 );
}
  

Equivalência do .NET Framework

Não aplicável. Para chamar a função padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de chamadas de plataformas.

Consulte também

Referência

Controle de diretório

_searchenv, _wsearchenv

getenv, _wgetenv

_putenv, _wputenv