共用方式為


_dupenv_s, _wdupenv_s

從目前的環境取得值。

重要

這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 Windows 平台應用程式中不支援的 CRT 函式)。

語法

errno_t _dupenv_s(
   char **buffer,
   size_t *numberOfElements,
   const char *varname
);
errno_t _wdupenv_s(
   wchar_t **buffer,
   size_t *numberOfElements,
   const wchar_t *varname
);

參數

buffer
要儲存變數的值的緩衝區。

numberOfElements
buffer 的大小。

varname
環境變數名稱。

傳回值

若成功,就是零;若失敗,則為錯誤碼。

這些函式會驗證其參數;如果 buffervarnameNULL ,則會叫用不正確參數處理常式,如參數驗證 中所述 。 若允許繼續執行,函式會將 errno 設定為 EINVAL 並傳回 EINVAL

如果這些函式無法配置足夠的記憶體,則會將 設定 bufferNULLnumberOfElements 0,並傳回 ENOMEM

備註

_dupenv_s 函式會在環境變數清單中搜尋 varname。 若找到變數,_dupenv_s 會配置緩衝區,並將變數的值複製到緩衝區中。 會在 buffernumberOfElements 中傳回緩衝區的位址和長度。 因為它會配置緩衝區本身, _dupenv_s 因此提供 更方便的 替代方式 getenv_s_wgetenv_s

注意

呼叫 程式負責藉由呼叫 free 來釋放記憶體。

如果找不到變數,則會 buffer 設定為 , numberOfElements 並將 設定為 NULL 0,且傳回值為 0,因為這種情況不會被視為錯誤狀況。

如果您對緩衝區的大小不感興趣,您可以針對 numberOfElements 傳遞 NULL

_dupenv_s 在 Windows 作業系統中不區分大小寫。 _dupenv_s 會使用全域變數 _environ 所指出的環境複本來存取環境。 如需 的討論 _environ_wgetenv_s 請參閱 中的 getenv_s

buffer 中的值是環境變數之值的複本,對其進行修改不會對環境產生任何影響。 使用 、 _wputenv_s_putenv_s 式來修改環境變數的值。

_wdupenv_s 是寬字元版本的 _dupenv_s_wdupenv_s 的引數是寬字元字串。 _wenviron 全域變數是寬字元版本的 _environ。 如需詳細資訊 _wenviron_wgetenv_s 請參閱 中的 getenv_s

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

泛型文字常式對應

TCHAR.H 常規 _UNICODE_MBCS 未定義 _MBCS 定義 _UNICODE 定義
_tdupenv_s _dupenv_s _dupenv_s _wdupenv_s

需求

常式 必要的標頭
_dupenv_s <stdlib.h>
_wdupenv_s <stdlib.h><wchar.h>

如需相容性詳細資訊,請參閱相容性

範例

// crt_dupenv_s.c
#include  <stdlib.h>

int main( void )
{
   char *pValue;
   size_t len;
   errno_t err = _dupenv_s( &pValue, &len, "pathext" );
   if ( err ) return -1;
   printf( "pathext = %s\n", pValue );
   free( pValue );
   err = _dupenv_s( &pValue, &len, "nonexistentvariable" );
   if ( err ) return -1;
   printf( "nonexistentvariable = %s\n", pValue );
   free( pValue ); // It's OK to call free with NULL
}
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)

另請參閱

進程和環境控制
環境常數
_dupenv_s_dbg, _wdupenv_s_dbg
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s