Aracılığıyla paylaş


_searchenv_s, _wsearchenv_s

Ortam yollarını kullanarak dosya arar. 'nin _searchenv _wsearchenvbu sürümleri, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmelerine sahiptir.

Önemli

Bu API, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.

Sözdizimi

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

Parametreler

filename
Aranacak dosyanın adı.

varname
Aranacak ortam.

pathname
Tam yolu depolamak için arabellek.

numberOfElements
Arabelleğin pathname boyutu.

Dönüş değeri

Başarılı olursa sıfır; hatayla ilgili bir hata kodu.

Boş bir dizeyse filename , dönüş değeri olur ENOENT.

Hata koşulları

filename varname pathname numberOfElements Dönüş değeri İçeriği pathname
herhangi bir herhangi bir NULL herhangi bir EINVAL yok
NULL herhangi bir herhangi bir herhangi bir EINVAL değiştirilmedi
herhangi bir herhangi bir herhangi bir <= 0 EINVAL değiştirilmedi

Bu hata koşullarından herhangi biri oluşursa, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler olarak EINVAL ayarlanır errno ve döndürürEINVAL.

Açıklamalar

Yordam, _searchenv_s belirtilen etki alanındaki hedef dosyayı arar. Değişkenvarname, , LIBve INCLUDEgibi PATHdizin yollarının listesini belirten herhangi bir ortam veya kullanıcı tanımlı değişken olabilir. Büyük _searchenv_s /küçük harfe duyarlı olduğundan ortam varname değişkeninin büyük/küçük harfle eşleşmesi gerekir. varname İşlemin ortamında tanımlanan bir ortam değişkeninin adıyla eşleşmiyorsa işlev sıfır döndürür ve pathname değişken değişmez.

Yordam önce geçerli çalışma dizinindeki dosyayı arar. Dosyayı bulamazsa, ortam değişkeni tarafından belirtilen dizinler aracılığıyla sonrakine bakar. Hedef dosya bu dizinlerden birindeyse, yeni oluşturulan yol içine pathnamekopyalanır. filename Dosya bulunamazsa boş pathname bir null ile sonlandırılan dize içerir.

Arabellek, pathname oluşturulacak yol adının tam uzunluğuna uyum sağlamak için en az _MAX_PATH karakter uzunluğunda olmalıdır. Aksi takdirde, _searchenv_s arabellek taşması pathname beklenmeyen davranışa neden olabilir.

_wsearchenv_s , öğesinin _searchenv_sgeniş karakterli bir sürümüdür; için bağımsız değişkenler _wsearchenv_s geniş karakterli dizelerdir. _wsearchenv_s ve _searchenv_s aksi takdirde aynı şekilde davran.

C++'ta bu işlevlerin kullanılması şablon aşırı yüklemeleriyle basitleştirilir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkarabilir (boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır) ve eski, güvenli olmayan işlevleri yeni ve güvenli karşılıklarıyla otomatik olarak değiştirebilir. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemeleri

Tchar.h yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS tanımlanan _UNICODE tanımlanan
_tsearchenv_s _searchenv_s _searchenv_s _wsearchenv_s

Gereksinimler

Yordam Gerekli başlık
_searchenv_s <stdlib.h>
_wsearchenv_s <stdlib.h> veya <wchar.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// 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 );
}
Path for CL.EXE:
C:\Program Files\Microsoft Visual Studio 2010\VC\BIN\CL.EXE

Ayrıca bkz.

Dizin denetimi
_searchenv, _wsearchenv
getenv, _wgetenv
_putenv, _wputenv