_dupenv_s_dbg
, _wdupenv_s_dbg
Ruft einen Wert aus der aktuellen Umgebung ab. Versionen von _dupenv_s
, _wdupenv_s
die Arbeitsspeicher _malloc_dbg
zuweisen, um weitere Debuginformationen bereitzustellen.
Syntax
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
);
Parameter
buffer
Puffer zum Speichern des Variablenwerts.
numberOfElements
Größe von buffer
.
varname
Umgebungsvariablenname.
blockType
Angeforderter Typ des Speicherblocks: _CLIENT_BLOCK
oder _NORMAL_BLOCK
.
filename
Zeiger zum Namen der Quelldatei oder NULL
.
lineNumber
Zeilennummer in der Quelldatei oder NULL
.
Rückgabewert
Null bei Erfolg, ein Fehlercode, wenn ein Fehler auftritt.
Diese Funktionen überprüfen ihre Parameter; wenn buffer
oder varname
ist NULL
, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung fortgesetzt werden darf, werden die auf die Funktionen festgelegt errno
EINVAL
und zurückgegeben EINVAL
.
Wenn diese Funktionen nicht genügend Arbeitsspeicher zuordnen können, legen buffer
sie auf NULL
und numberOfElements
auf 0 fest und geben sie zurück ENOMEM
.
Hinweise
Die _dupenv_s_dbg
Funktionen und _wdupenv_s_dbg
Funktionen sind identisch mit _dupenv_s
und _wdupenv_s
außer dass diese Funktionen, wenn _DEBUG
definiert, die Debugversion von malloc
, _malloc_dbg
verwenden, um Speicher für den Wert der Umgebungsvariablen zuzuweisen. Informationen zu den Debugfeatures von _malloc_dbg
, finden Sie unter _malloc_dbg
.
In den meisten Fällen müssen Sie diese Funktionen nicht explizit aufrufen. Stattdessen können Sie das _CRTDBG_MAP_ALLOC
-Flag definieren. Wenn _CRTDBG_MAP_ALLOC
definiert ist, werden Aufrufe von _dupenv_s
und _wdupenv_s
zu _dupenv_s_dbg
bzw. _wdupenv_s_dbg
neu zugeordnet, wobei blockType
auf _NORMAL_BLOCK
festgelegt wird. Daher müssen Sie diese Funktionen nicht explizit aufrufen, es sei denn, Sie möchten die Heapblöcke als _CLIENT_BLOCK
. Weitere Informationen zu den Blocktypen finden Sie unter Blocktypen auf dem Debugheap.
Mapping generischer Textroutinen
TCHAR.H-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tdupenv_s_dbg |
_dupenv_s_dbg |
_dupenv_s_dbg |
_wdupenv_s_dbg |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_dupenv_s_dbg |
<crtdbg.h> |
_wdupenv_s_dbg |
<crtdbg.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
}
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Siehe auch
Prozess- und Umgebungskontrolle
Umweltkonstanten
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s