Aracılığıyla paylaş


_dupenv_s_dbg, _wdupenv_s_dbg

Bir değeri geçerli ortamından alın.Sürümleri _dupenv_s, _wdupenv_s ile bellek tahsis _malloc_dbg ek hata ayıklama bilgileri sağlamak için.

errno_t _dupenv_s_dbg(
   char **buffer,
   size_t *numberOfElements,
   const char *varname,
   int blockType,
   const char *filename,
   int linenumber
);
errno_t _wdupenv_s_dbg(
   wchar_t **buffer,
   size_t * numberOfElements,
   const wchar_t *varname,
   int blockType,
   const char *filename,
   int linenumber
);

Parametreler

  • buffer
    Değişkenin değeri saklamak için arabellek.

  • numberOfElements
    Size of buffer.

  • varname
    Ortam değişkeni adı.

  • blockType
    Bellek bloğu türü istendi: _CLIENT_BLOCK veya _NORMAL_BLOCK.

  • filename
    İşaretçi kaynak dosyanın adı ya da NULL.

  • linenumber
    Kaynak dosyadaki satır veya NULL.

Dönüş Değeri

Başarı, başarısızlık bir hata kodu sıfır.

Bu işlevler, kendi parametrelerini doğrulamak; buffer veya varname olan NULL, geçersiz parametre işleyicisi açıklandığı şekilde çağrılır Parametre doğrulama.Set işlevlerinden yürütülmesine devam etmek için izin verilirse, errno için EINVAL ve EINVAL.

Bu işlevler yeterli bellek ayrılamıyor, bunlar set buffer için NULL ve numberOfElements 0 ve return ENOMEM.

Notlar

_dupenv_s_dbg Ve _wdupenv_s_dbg işlevleri aynı _dupenv_s ve _wdupenv_s dışında ne zaman _DEBUG olan tanımlı, bu işlevleri hata ayıklama sürümünü kullanma malloc, _malloc_dbg, ortam değişkeninin değeri için bellek ayrılamadı.Hata ayıklama özellikleri hakkında bilgi için _malloc_dbg, bkz: _malloc_dbg.

Çoğu durumda bu işlevleri açıkça çağırın gerekmez.Bunun yerine, bayrak tanımlayabilirsiniz _CRTDBG_MAP_ALLOC.Zaman _CRTDBG_MAP_ALLOC tanımlanır, için çağırdığı _dupenv_s ve _wdupenv_s için eşleştirilir _dupenv_s_dbg ve _wdupenv_s_dbg, sırasıyla ile blockType için _NORMAL_BLOCK.Bu nedenle, yığın taşları olarak işaretlemek istediğiniz sürece bu işlevleri açıkça çağırın gerekmez _CLIENT_BLOCK.Blok türleri hakkında daha fazla bilgi için bkz: Hata ayıklama öbek üzerindeki blok türleri.

Genel metin yordamı eşlemeleri

TCHAR.H yordamına girildi

_UNICODE & _mbcs tanımlı değil

Tanımlanan _mbcs

Tanımlanan _UNICODE

_tdupenv_s_dbg

_dupenv_s_dbg

_dupenv_s_dbg

_wdupenv_s_dbg

Gereksinimler

Yordamı

Gerekli başlık

_dupenv_s_dbg

<crtdbg.h>

_wdupenv_s_dbg

<crtdbg.h>

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

// crt_dupenv_s_dbg.c
#include  <stdlib.h>
#include <crtdbg.h>

int main( void )
{
   char *pValue;
   size_t len;
   errno_t err = _dupenv_s_dbg( &pValue, &len, "pathext",
      _NORMAL_BLOCK, __FILE__, __LINE__ );
   if ( err ) return -1;
   printf( "pathext = %s\n", pValue );
   free( pValue );
   err = _dupenv_s_dbg( &pValue, &len, "nonexistentvariable",
      _NORMAL_BLOCK, __FILE__, __LINE__ );
   if ( err ) return -1;
   printf( "nonexistentvariable = %s\n", pValue );
   free( pValue ); // It's OK to call free with NULL
}

Örnek Çıktı

pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)

.NET Framework Eşdeğeri

System::Environment::GetEnvironmentVariable

Ayrıca bkz.

Başvuru

İşlem ve ortam denetimi

Çevresel sabitleri

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s