Teilen über


CRT-Funktionen werden in Apps für die universelle Windows-Plattform nicht unterstützt

Viele C-Runtime-Funktionen (CRT) sind beim Erstellen von UWP-Apps (Universelle Windows-Plattform) nicht verfügbar. Manchmal sind Problemumgehungen verfügbar– beispielsweise können Sie Windows-Runtime- oder Win32-APIs verwenden. In anderen Fällen wurden CRT-Funktionen gesperrt, da die entsprechenden Features oder die unterstützenden APIs nicht für UWP-Apps gelten. Eine alternative Methode, die für die Windows-Runtime unterstützt wird, finden Sie unter Alternativen zu Windows-APIs in UWP-Apps.

In der folgenden Tabelle sind die CRT-Funktionen aufgeführt, die beim Erstellen von UWP-Apps nicht verfügbar sind. Es zeigt alle anwendbaren Problemumgehungen an.

Nicht unterstützte CRT-Funktionen

Funktion BESCHREIBUNG Zwischenlösung
_beep _sleep _seterrormode Diese Funktionen waren in früheren Versionen des CRT veraltet. Außerdem sind die entsprechenden Win32-APIs für UWP-Apps nicht verfügbar. Keine Problemumgehung.
chdir _chdrive getcwd Diese Funktionen sind veraltet oder sind nicht threadsicher. Verwenden Sie _chdir, _getcwd und verwandte Funktionen.
_cgets _cgets_s _cgetws _cgetws_s _cprintf _cprintf_l _cprintf_p _cprintf_p_l _cprintf_s _cprintf_s_l _cputs _cputws _cscanf _cscanf_l _cscanf_s _cscanf_s_l _cwait _cwprintf _cwprintf_l _cwprintf_p _cwprintf_p_l _cwprintf_s _cwprintf_s_l _cwscanf _cwscanf_l _cwscanf_s _cwscanf_s_l _vcprintf _vcprintf_l _vcprintf_p _vcprintf_p_l _vcprintf_s _vcprintf_s_l _vcwprintf _vcwprintf_l _vcwprintf_p _vcwprintf_p_l _vcwprintf_s _vcwprintf_s_l _getch _getch_nolock _getche _getche_nolock _getwch _getwch_nolock _getwche _getwche_nolock _putch _putch_nolock _putwch _putwch_nolock _ungetch _ungetch_nolock _ungetwch _ungetwch_nolock _kbhit kbhit putch cgets cprintf cputs cscanf cwait getch getche ungetch Diese Konsolen-E/A-Funktionen sind in GUI-basierten UWP-Apps nicht verfügbar. UWP-Konsolen-Apps können diese Funktionen verwenden. Weitere Informationen finden Sie unter Erstellen einer Konsolen-App für die universelle Windows-Plattform.
getpid _getpid Diese Funktionen sind veraltet. Verwenden Sie die Win32-API GetCurrentProcessId.
_getdiskfree Nicht verfügbar. Verwenden Sie die Win32-API GetDiskFreeSpaceExW.
_getdrive _getdrives Die entsprechende API ist für UWP-Apps nicht verfügbar. Keine Problemumgehung.
_inp _inpd _inpw _outp _outpd _outpw inp inpd inpw outp outpd outpw Port E/A wird in UWP-Apps nicht unterstützt. Keine Problemumgehung.
_ismbcalnum _ismbcalnum_l _ismbcalpha _ismbcalpha_l _ismbcdigit _ismbcdigit_l _ismbcgraph _ismbcgraph_l _ismbchira _ismbchira_l _ismbckata _ismbckata_l _ismbcl0 _ismbcl0_l _ismbcl1 _ismbcl1_l _ismbcl2 _ismbcl2_l _ismbclegal _ismbclegal_l _ismbclower _ismbclower_l _ismbcprint _ismbcprint_l _ismbcpunct _ismbcpunct_l _ismbcspace _ismbcspace_l _ismbcsymbol _ismbcsymbol_l _ismbcupper _ismbcupper_l _mbbtombc _mbbtombc_l _mbbtype _mbbtype_l _mbccpy _mbccpy_l _mbccpy_s _mbccpy_s_l _mbcjistojms _mbcjistojms_l _mbcjmstojis _mbcjmstojis_l _mbclen _mbclen_l _mbctohira _mbctohira_l _mbctokata _mbctokata_l _mbctolower _mbctolower_l _mbctombb _mbctombb_l _mbctoupper _mbctoupper_l _mbsbtype _mbsbtype_l _mbscat _mbscat_l _mbscat_s _mbscat_s_l _mbschr _mbschr_l _mbscmp _mbscmp_l _mbscoll _mbscoll_l _mbscpy _mbscpy_l _mbscpy_s _mbscpy_s_l _mbscspn _mbscspn_l _mbsdec _mbsdec_l _mbsicmp _mbsicmp_l _mbsicoll _mbsicoll_l _mbsinc _mbsinc_l _mbslen _mbslen_l _mbslwr _mbslwr_l _mbslwr_s _mbslwr_s_l _mbsnbcat _mbsnbcat_l _mbsnbcat_s _mbsnbcat_s_l _mbsnbcmp _mbsnbcmp_l _mbsnbcnt _mbsnbcnt_l _mbsnbcoll _mbsnbcoll_l _mbsnbcpy _mbsnbcpy_l _mbsnbcpy_s _mbsnbcpy_s_l _mbsnbicmp _mbsnbicmp_l _mbsnbicoll _mbsnbicoll_l _mbsnbset _mbsnbset_l _mbsnbset_s _mbsnbset_s_l _mbsncat _mbsncat_l _mbsncat_s _mbsncat_s_l _mbsnccnt _mbsnccnt_l _mbsncmp _mbsncmp_l _mbsncoll _mbsncoll_l _mbsncpy _mbsncpy_l _mbsncpy_s _mbsncpy_s_l _mbsnextc _mbsnextc_l _mbsnicmp _mbsnicmp_l _mbsnicoll _mbsnicoll_l _mbsninc _mbsninc_l _mbsnlen _mbsnlen_l _mbsnset _mbsnset_l _mbsnset_s _mbsnset_s_l _mbspbrk _mbspbrk_l _mbsrchr _mbsrchr_l _mbsrev _mbsrev_l _mbsset _mbsset_l _mbsset_s _mbsset_s_l _mbsspn _mbsspn_l _mbsspnp _mbsspnp_l _mbsstr _mbsstr_l _mbstok _mbstok_l _mbstok_s _mbstok_s_l _mbsupr _mbsupr_l _mbsupr_s _mbsupr_s_l is_wctype Multibytezeichenfolgen werden in UWP-Apps nicht unterstützt. Verwenden Sie stattdessen Unicode-Zeichenfolgen.
_pclose _pipe _popen _wpopen Pipe-Funktionen sind für UWP-Apps nicht verfügbar. Keine Problemumgehung.
_resetstkoflw Die Unterstützung von Win32-APIs ist für UWP-Apps nicht verfügbar. Keine Problemumgehung.
_getsystime _setsystime Dies waren veraltete APIs in früheren CRT-Versionen. Außerdem kann ein Benutzer die Systemzeit in einer UWP-App aufgrund fehlender Berechtigungen nicht festlegen. Verwenden Sie die Win32-API GetSystemTime, um die Systemzeit nur abzurufen. Systemzeit kann nicht festgelegt werden.
_environ _putenv _putenv_s _searchenv _searchenv_s _dupenv_s _wputenv _wputenv_s _wsearchenv Getenv getenv_s Putenv _wdupenv_s_wenviron_wgetenv_wgetenv_s_wsearchenv_stzset Umgebungsvariablen sind für UWP-Apps nicht verfügbar. Keine Problemumgehung. Um die Zeitzone festzulegen, verwenden Sie _tzset.
_loaddll _getdllprocaddr _unloaddll Dies waren veraltete Funktionen in früheren CRT-Versionen. Außerdem kann ein Benutzer DLLs außer den Dateien im selben Anwendungspaket nicht laden. Verwenden Sie die Win32-APIs LoadPackagedLibrary, GetProcAddress und FreeLibrary, um verpackte DLLs zu laden und zu verwenden.
_wexecl _wexecle _wexeclp _wexeclpe _wexecv _wexecve _wexecvp _wexecvpe _execl _execle _execlp _execlpe _execv _execve _execvp _execvpe _spawnl _spawnle _spawnlp _spawnlpe _spawnv _spawnve _spawnvp _spawnvpe _wspawnl _wspawnle _wspawnlp _wspawnlpe _wspawnv _wspawnve _wspawnvp _wspawnvpe _wsystem execl execle execlp execlpe execv execve execvp execvpe spawnl spawnle spawnlp spawnlpe spawnv spawnve spawnvp spawnvpe system Die Funktionalität ist in UWP-Apps nicht verfügbar. Eine UWP-App kann keine andere UWP-App oder eine Desktop-App aufrufen. Keine Problemumgehung.
_heapwalk _heapadd _heapchk _heapset _heapused Diese Funktionen werden in der Regel verwendet, um den Heap zu verwalten. Entsprechende Win32-APIs werden jedoch in UWP-Apps nicht unterstützt. Des Weiteren können Apps keine privaten Heaps mehr erstellen oder verwenden. Keine Problemumgehung. _heapwalk Ist jedoch nur für Debuggingzwecke im DEBUG CRT verfügbar. Diese Funktionen können nicht in Apps verwendet werden, die in den Microsoft Store hochgeladen werden.

Die folgenden Funktionen sind im CRT für UWP-Apps verfügbar. Verwenden Sie sie jedoch nur, wenn Sie die entsprechenden Win32- oder Windows-Runtime-APIs nicht verwenden können, z. B. wenn Sie große Codebasen portieren:

Funktionen Zwischenlösung
Single-Byte-Zeichenfolgenfunktionen, z. B. strcat, strcpy, strlwr usw. Beschränken Sie Ihre UWP-Apps auf Unicode, da alle Win32-APIs und Windows-Runtime-APIs, die bereitgestellt werden, nur Unicode-Zeichensätze verwenden. Single-Byte-Funktionen wurden für das Portieren großer Codebasen gelassen, sollten aber andernfalls vermieden werden. Die entsprechenden Funktionen für breite Zeichen sollten falls möglich stattdessen verwendet werden.
Stream-E/A- und Datei-E/A-Funktionen auf niedriger Ebene, z. B. fopen, open, usw. Diese Funktionen sind synchron, was für UWP-Apps nicht empfohlen wird. Verwenden Sie in Ihren UWP-Apps asynchrone APIs zum Öffnen, Lesen und Schreiben in Dateien, um das Sperren des UI-Threads zu verhindern. Beispiele für solche APIs sind die apIs in der Windows::Storage::FileIO Klasse.

Windows 8.x Store-Apps und Windows Phone 8.x-Apps

Sowohl die zuvor erwähnten APIs als auch die folgenden APIs sind in Windows 8.x Store-Apps und Windows Phone 8.x-Apps nicht verfügbar.

Funktionen BESCHREIBUNG Zwischenlösung
_beginthread _beginthreadex _endthread _endthreadex Threading Win32-APIs sind in Windows 8.x Store-Apps nicht verfügbar. Verwenden Sie die Windows Runtime Windows::System::Threading::ThreadPool oder concurrency::task stattdessen.
_chdir _wchdir _getcwd _getdcwd _wgetcwd _wgetdcwd Das Konzept eines Arbeitsverzeichnisses gilt nicht für Windows 8.x Store-Apps. Verwenden Sie stattdessen vollständige Pfade.
_isleadbyte_l _ismbbalnum, _ismbbalnum_l_ismbbalpha_ismbbalpha_ismbbalpha_l_ismbbgraph_ismbbgraph_l_ismbbkalnum_ismbbkalnum_l_ismbbkana_ismbbkana_l_ismbbkprint_ismbbkprint_l_ismbbkpunct_ismbbkpunct_l_ismbblead_ismbblead_l_ismbbprint_ismbbprint_l_ismbbpunct_ismbbpunct_l_ismbbtrail_ismbbtrail_l_ismbslead_ismbslead_l_ismbstrail_ismbstrail_l_mbsdupisleadbyte Multibytezeichenfolgen werden in Windows 8.x Store-Apps nicht unterstützt. Verwenden Sie stattdessen Unicode-Zeichenfolgen.
_tzset Umgebungsvariablen sind für Windows 8.x Store-Apps nicht verfügbar. Keine Problemumgehung.
_get_heap_handle, _heapmin Die entsprechenden Win32-APIs werden in Windows 8.x Store-Apps nicht unterstützt. Apps können nun keine privaten Heaps mehr erstellen. Keine Problemumgehung. _get_heap_handle Ist jedoch nur für Debuggingzwecke im DEBUG CRT verfügbar.