_dupenv_s
, _wdupenv_s
現在の環境から値を取得します。
重要
この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル 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
環境変数名。
戻り値
正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。
これらの関数は、パラメーターを検証します。 buffer
または varname
が NULL
されている場合は、「パラメーターの検証 で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は errno
を EINVAL
に設定し、EINVAL
を返します。
これらの関数で十分なメモリを割り当てることができない場合は、 buffer
を NULL
に設定し、 numberOfElements
を 0 に設定し、 ENOMEM
を返します。
解説
_dupenv_s
関数は、環境変数のリストから varname
を検索します。 変数が見つかると、_dupenv_s
はバッファーを割り当てて変数の値をバッファーにコピーします。 バッファーのアドレスと長さが buffer
および numberOfElements
で返されます。 バッファー自体が割り当てられるため、_dupenv_s
は、_wgetenv_s
getenv_s
に代わる便利な方法を提供します。
Note
free
を呼び出してメモリを解放するのは、呼び出し元プログラムの責任です。
変数が見つからない場合、 buffer
は NULL
に設定され、 numberOfElements
は 0 に設定され、戻り値は 0 になります。この状況はエラー状態と見なされないためです。
バッファーのサイズに関心がない場合は、numberOfElements
のNULL
を渡すことができます。
Windows オペレーティング システムでは、_dupenv_s
は大文字と小文字を区別しません。 _dupenv_s
関数は、_environ
グローバル変数が指す環境のコピーを使用して環境にアクセスします。 _environ
については、「getenv_s
、_wgetenv_s
」の「解説」を参照してください。
buffer
の値は、環境変数の値のコピーです。この値を変更しても環境には影響しません。 環境変数の値を変更するには、_putenv_s
、_wputenv_s
関数を使用します。
_wdupenv_s
は _dupenv_s
のワイド文字バージョンで、_wdupenv_s
の引数はワイド文字列です。 _wenviron
グローバル変数は _environ
と同じですが、ワイド文字を扱えるという点で異なっています。 _wenviron
の詳細については、「getenv_s
、_wgetenv_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> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// 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