Az Univerzális Windows Platform alkalmazásokban a CRT-függvények nem támogatottak

Sok C futtatókörnyezeti (CRT) függvény nem érhető el univerzális Windows-platform (UWP) alkalmazások létrehozásakor. Néha áthidaló megoldások érhetők el – például Windows Futtatókörnyezetet vagy Win32 API-kat használhat. Más esetekben a CRT-függvények ki lettek tiltva, mert a megfelelő funkciók vagy a támogató API-k nem alkalmazhatók az UWP-alkalmazásokra. A Windows futtatókörnyezetben támogatott alternatív módszer kereséséhez tekintse meg a Windows API-k alternatíváit az UWP-alkalmazásokban.

Az alábbi táblázat felsorolja azokat a CRT-függvényeket, amelyek UWP-alkalmazások létrehozásakor nem érhetők el. Az esetleges kerülő megoldásokat jelzi.

Nem támogatott CRT-függvények

Funkció Leírás Megoldás
_beep _sleep _seterrormode Ezek a függvények elavultak voltak a CRT korábbi verzióiban. Emellett a megfelelő Win32 API-k nem érhetők el UWP-alkalmazásokhoz. Nincs áthidaló megoldás.
chdir _chdrive getcwd Ezek a függvények elavultak, vagy nem szálbiztosak. Használjon _chdirés _getcwd kapcsolódó függvényeket.
_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 Ezek a konzol I/O-függvényei nem érhetők el a GUI-alapú UWP-alkalmazásokban. Az UWP-konzolalkalmazások használhatják ezeket a függvényeket. További információ: Univerzális Windows-platform konzolalkalmazás létrehozása.
getpid _getpid Ezek a függvények elavultak. Használja a Win32 API-t GetCurrentProcessId.
_getdiskfree Nem érhető el. Használja a Win32 API-t GetDiskFreeSpaceExW.
_getdrive _getdrives A megfelelő API nem érhető el UWP-alkalmazásokhoz. Nincs áthidaló megoldás.
_inp _inpd _inpw _outp _outpd _outpw inp inpd inpw outp outpd outpw Az UWP-alkalmazások nem támogatják a port IO-t. Nincs áthidaló megoldás.
_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 A több bájtos sztringek nem támogatottak az UWP-alkalmazásokban. Használjon Unicode-sztringeket.
_pclose _pipe _popen _wpopen A csőfunkciók nem érhetők el az UWP-alkalmazások számára. Nincs áthidaló megoldás.
_resetstkoflw Az UWP-alkalmazások nem támogatják a Win32 API-kat. Nincs áthidaló megoldás.
_getsystime _setsystime Ezek elavult API-k voltak a korábbi CRT-verziókban. Emellett a felhasználó nem tudja beállítani a rendszeridőt egy UWP-alkalmazásban az engedélyek hiánya miatt. Ha csak a rendszeridőt szeretné megkapni, használja a Win32 API-t GetSystemTime. A rendszeridő nem állítható be.
_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 A környezeti változók nem érhetők el az UWP-alkalmazások számára. Nincs áthidaló megoldás. Az időzóna beállításához használja _tzset.
_loaddll _getdllprocaddr _unloaddll Ezek elavult függvények voltak a korábbi CRT-verziókban. Emellett a felhasználók nem tölthetnek be DLL-eket, kivéve azokat, amelyek ugyanabban az alkalmazáscsomagban vannak. Használja a Win32 API-kat LoadPackagedLibrary, GetProcAddressés FreeLibrary töltse be és használja a csomagolt DLL-eket.
_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 A funkció nem érhető el az UWP-alkalmazásokban. Az UWP-alkalmazások nem hívhatnak meg másik UWP-alkalmazást vagy asztali alkalmazást. Nincs áthidaló megoldás.
_heapwalk _heapadd _heapchk _heapset _heapused Ezeket a függvényeket általában a halommedenyő kezelésére használják. A megfelelő Win32 API-k azonban nem támogatottak az UWP-alkalmazásokban. Az alkalmazások pedig már nem hozhatnak létre vagy használhatnak privát halomokat. Nincs áthidaló megoldás. A DEBUG CRT-ben _heapwalk azonban csak hibakeresési célokra érhető el. Ezek a függvények nem használhatók a Microsoft Store-ba feltöltött alkalmazásokban.

A következő függvények érhetők el a CRT-ben UWP-alkalmazásokhoz. Azonban csak akkor használja őket, ha nem tudja használni a megfelelő Win32- vagy Windows-futtatókörnyezeti API-kat, például nagy kódbázisok portolásakor:

Functions Megoldás
Egy bájtos karakterlánc függvények – például strcat, strcpy, strlwr, stb. Az UWP-alkalmazásokat szigorúan Unicode-ra állítsa, mert a közzétett Win32 API-k és Windows Runtime API-k csak Unicode-karakterkészleteket használnak. Az egy bájtos függvények nagy kódbázisok portolására szolgáltak, de ezt máskülönben el kell kerülni. Ha lehetséges, a megfelelő széles karakterekkel kapcsolatos függvényeket kell használni.
Streamelje az IO-t és az alacsony szintű fájl IO-függvényeket – például fopen, openstb. Ezek a függvények szinkronok, ami nem ajánlott UWP-alkalmazásokhoz. Az UWP-alkalmazásokban aszinkron API-kat használva nyissa meg a fájlokat, olvasson belőlük és írjon beléjük, hogy elkerülje a felhasználói felületi szál zárolását. Ilyen API-k például az osztályban lévők Windows::Storage::FileIO .

Windows 8.x Áruházbeli alkalmazások és Windows Phone 8.x-alkalmazások

A korábban említett API-k és a következő API-k nem érhetők el a Windows 8.x Áruházbeli és a Windows Phone 8.x-alkalmazásokban.

Functions Leírás Megoldás
_beginthread _beginthreadex _endthread _endthreadex A Windows 8.x Áruház alkalmazásokban a szálkezelő Win32 API-k nem érhetők el. Használja a Windows Runtime Windows::System::Threading::ThreadPool vagy a concurrency::task helyette.
_chdir _wchdir _getcwd _getdcwd _wgetcwd _wgetdcwd A munkakönyvtár fogalma nem vonatkozik a Windows 8.x Áruházbeli alkalmazásokra. Ehelyett használjon teljes elérési utakat.
_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 A többszörös bájtos karakterláncok nem támogatottak a Windows 8.x áruház alkalmazásoknál. Használjon Unicode-sztringeket.
_tzset A környezeti változók nem érhetők el a Windows 8.x Áruházbeli alkalmazások számára. Nincs áthidaló megoldás.
_get_heap_handle, _heapmin A Windows 8.x Áruházbeli alkalmazások nem támogatják a megfelelő Win32 API-kat. Az alkalmazások pedig már nem hozhatnak létre privát halomokat. Nincs áthidaló megoldás. A DEBUG CRT-ben _get_heap_handle azonban csak hibakeresési célokra érhető el.