Freigeben über


_dupenv_s_dbg, _wdupenv_s_dbg

Ruft einen Wert aus der aktuellen Umgebung ab. Versionen von _dupenv_s, _wdupenv_s, die Speicher mit _malloc_dbg belegen, um zusätzliche Debuginformationen bereitzustellen.

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 varnameNULL ist, wird der Handler für ungültige Parameter aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, legen die Funktionen errno auf EINVAL fest und geben EINVAL zurück.

Wenn diese Funktionen nicht genug Arbeitsspeicher zuordnen können, legen sie buffer auf NULL und numberOfElements auf 0 fest und geben ENOMEM zurück.

Hinweise

Die _dupenv_s_dbg- und _wdupenv_s_dbg-Funktionen sind identisch mit _dupenv_s und _wdupenv_s, außer dass bei Definition von _DEBUG diese Funktionen die Debugversion von malloc, _malloc_dbg verwenden, um Speicher für den Wert der Umgebungsvariable zu belegen. Weitere Informationen zu den Debugfunktionen 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 markieren. Weitere Informationen zu den Blocktypen finden Sie unter Blocktypen auf dem Debugheap.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _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>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

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
}

Beispielausgabe

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

.NET Framework-Entsprechung

System::Environment::GetEnvironmentVariable

Siehe auch

Referenz

Prozess- und Umgebungssteuerung

Umgebungskonstanten

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s