Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle

De nombreuses fonctions de runtime C (CRT) ne sont pas disponibles lorsque vous générez des applications plateforme Windows universelle (UWP). Parfois, les solutions de contournement sont disponibles, par exemple, vous pouvez utiliser des API Windows Runtime ou Win32. Dans d’autres cas, les fonctions CRT ont été interdites, car les fonctionnalités correspondantes ou les API de prise en charge ne sont pas applicables aux applications UWP. Pour rechercher une autre méthode prise en charge pour Windows Runtime, consultez Alternatives aux API Windows dans les applications UWP.

Le tableau suivant répertorie les fonctions CRT qui ne sont pas disponibles lorsque vous générez des applications UWP. Elle indique les solutions de contournement qui s’appliquent.

Fonctions CRT non prises en charge

Fonction Description Solution de contournement
_beep _sleep _seterrormode Ces fonctions sont obsolètes dans les versions précédentes de CRT. En outre, les API Win32 correspondantes ne sont pas disponibles pour les applications UWP. Aucune solution de contournement.
chdir _chdrive getcwd Ces fonctions sont obsolètes ou ne sont pas thread-safe. Utilisez _chdir, _getcwd et les fonctions associées.
_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 Ces fonctions d’E/S de console ne sont pas disponibles dans les applications UWP basées sur l’interface graphique utilisateur. Les applications console UWP peuvent utiliser ces fonctions. Pour plus d’informations, consultez Créer une application console plateforme Windows universelle.
getpid _getpid Ces fonctions sont obsolètes. Utilisez l’API Win32 GetCurrentProcessId.
_getdiskfree Non disponible. Utilisez l’API Win32 GetDiskFreeSpaceExW.
_getdrive _getdrives L’API correspondante n’est pas disponible pour les applications UWP. Aucune solution de contournement.
_inp _inpd _inpw _outp _outpd _outpw inp inpd inpw outp outpd outpw E/S de port non pris en charge dans les applications UWP. Aucune solution de contournement.
_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 Les chaînes multioctets ne sont pas prises en charge dans les applications UWP. Utilisez des chaînes Unicode à la place.
_pclose _pipe _popen _wpopen La fonctionnalité pipe n’est pas disponible pour les applications UWP. Aucune solution de contournement.
_resetstkoflw Les API Win32 de prise en charge ne sont pas disponibles pour les applications UWP. Aucune solution de contournement.
_getsystime _setsystime Il s’agit d’API obsolètes dans les versions précédentes de CRT. En outre, un utilisateur ne peut pas définir l’heure système dans une application UWP en raison d’un manque d’autorisations. Pour obtenir uniquement l’heure système, utilisez l’API Win32 GetSystemTime. Impossible de définir l’heure système.
_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 Les variables d’environnement ne sont pas disponibles pour les applications UWP. Aucune solution de contournement. Pour définir le fuseau horaire, utilisez _tzset.
_loaddll _getdllprocaddr _unloaddll Il s’agit de fonctions obsolètes dans les versions précédentes de CRT. En outre, un utilisateur ne peut pas charger de DLL à l’exception des DLL du même package d’application. Utilisez les API Win32 LoadPackagedLibrary, GetProcAddresset FreeLibrary pour charger et utiliser les DLL packagées.
_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 La fonctionnalité n’est pas disponible dans les applications UWP. Une application UWP ne peut pas appeler une autre application UWP ou une application de bureau. Aucune solution de contournement.
_heapwalk _heapadd _heapchk _heapset _heapused Ces fonctions sont généralement utilisées avec le tas. Toutefois, les API Win32 correspondantes ne sont pas prises en charge dans les applications UWP. De plus, les applications ne peuvent plus créer ou utiliser les tas privés. Aucune solution de contournement. Toutefois, _heapwalk est disponible dans DEBUG CRT, à des fins de débogage uniquement. Ces fonctions ne peuvent pas être utilisées dans les applications chargées dans le Microsoft Store.

Les fonctions suivantes sont disponibles dans le CRT pour les applications UWP. Toutefois, utilisez-les uniquement lorsque vous ne pouvez pas utiliser les API Win32 ou Windows Runtime correspondantes, par exemple lorsque vous transférez des bases de code volumineuses :

Functions Solution de contournement
Fonctions de chaîne simple octet : par exemple, strcat, strcpy, strlwr, et ainsi de suite. Rendez vos applications UWP strictement Unicode, car toutes les API Win32 et les API Windows Runtime exposées utilisent uniquement des jeux de caractères Unicode. Les fonctions monooctets ont été laissées pour le portage de bases de code volumineuses, mais doivent sinon être évitées. Les fonctions de caractères larges correspondantes doivent être utilisées au lieu de cela.
Fonctions d’E/S de flux ou d’E/S de fichier de bas niveau, par exemple, fopen, openet ainsi de suite. Ces fonctions sont synchrones, ce qui n’est pas recommandé pour les applications UWP. Dans vos applications UWP, utilisez des API asynchrones pour ouvrir, lire et écrire dans des fichiers afin d’éviter le verrouillage du thread d’interface utilisateur. Ces API sont, par exemple, celles de la classe Windows::Storage::FileIO .

Applications du Windows 8.x Store et applications Windows Phone 8.x

Les API mentionnées précédemment et les API suivantes ne sont pas disponibles dans les applications du Windows 8.x Store et windows Téléphone applications 8.x.

Functions Description Solution de contournement
_beginthread _beginthreadex _endthread _endthreadex Les API Win32 de thread ne sont pas disponibles dans les applications du Windows 8.x Store. Utilisez Windows Runtime Windows::System::Threading::ThreadPool ou concurrency::task à la place.
_chdir _wchdir _getcwd _getdcwd _wgetcwd _wgetdcwd Le concept d’un répertoire de travail ne s’applique pas aux applications du Windows 8.x Store. Utilisez plutôt des chemins complets.
_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 Les chaînes multioctets ne sont pas prises en charge dans les applications du Windows 8.x Store. Utilisez des chaînes Unicode à la place.
_tzset Les variables d’environnement ne sont pas disponibles pour les applications du Windows 8.x Store. Aucune solution de contournement.
_get_heap_handle, _heapmin Les API Win32 correspondantes ne sont pas prises en charge dans les applications du Windows 8.x Store. De plus, les applications ne peuvent plus créer de tas privé. Aucune solution de contournement. Toutefois, _get_heap_handle est disponible dans DEBUG CRT, à des fins de débogage uniquement.