次の方法で共有


ユニバーサル Windows プラットフォーム アプリではサポートされていない CRT 関数

ユニバーサル Windows プラットフォーム (UWP) アプリをビルドする場合、多くの C ランタイム (CRT) 関数は使用できません。 回避策が利用できる場合があります。たとえば、Windows ランタイムまたは Win32 API を使用できます。 その他のケースでは、対応する機能またはサポート API が UWP アプリに適用されないため、CRT 関数が禁止されています。 Windows ランタイムでサポートされている別の方法を探すには、 UWP アプリの Windows API の代替手段に関するページを参照してください。

次の表に、UWP アプリをビルドするときに使用できない CRT 関数を示します。 これは、該当する回避策を示します。

サポートされていない CRT 関数

機能 説明 対処法
_beep _sleep _seterrormode これらの関数は、以前のバージョンの CRT では使用されなくなりました。 また、対応する Win32 API は UWP アプリでは使用できません。 回避策はありません。
chdir _chdrive getcwd これらの関数は古い形式であるか、スレッド セーフではありません。 _chdir_getcwd、および関連する関数を使用します。
_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 これらのコンソール I/O 関数は、GUI ベースの UWP アプリでは使用できません。 UWP コンソール アプリでは、これらの関数を使用できます。 詳細については、「 ユニバーサル Windows プラットフォーム コンソール アプリの作成」を参照してください。
getpid _getpid これらの関数は廃止されています。 Win32 API GetCurrentProcessIdを使用します。
_getdiskfree 未提供 Win32 API GetDiskFreeSpaceExWを使用します。
_getdrive _getdrives 対応する API は、UWP アプリでは使用できません。 回避策はありません。
_inp _inpd _inpw _outp _outpd _outpw inp inpd inpw outp outpd outpw ポート IO は、UWP アプリではサポートされていません。 回避策はありません。
_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 UWP アプリでは、マルチバイト文字列はサポートされていません。 代わりに Unicode 文字列を使用してください。
_pclose _pipe _popen _wpopen パイプ機能は、UWP アプリでは使用できません。 回避策はありません。
_resetstkoflw Win32 API のサポートは、UWP アプリでは使用できません。 回避策はありません。
_getsystime _setsystime これらは、以前の CRT バージョンでは古い API でした。 また、アクセス許可がないため、ユーザーは UWP アプリでシステム時刻を設定できません。 システム時刻のみを取得するには、Win32 API GetSystemTimeを使用します。 システム時刻を設定できません。
_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 環境変数は、UWP アプリでは使用できません。 回避策はありません。 タイム ゾーンを設定するには、 _tzsetを使用します。
_loaddll _getdllprocaddr _unloaddll これらは以前の CRT バージョンでは古い関数でした。 また、ユーザーは、同じアプリケーション パッケージ内のものを除いて DLL を読み込むことはありません。 パッケージ化された DLL を読み込んで使用するには、Win32 API LoadPackagedLibraryGetProcAddress、および FreeLibrary を使用します。
_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 この機能は、UWP アプリでは使用できません。 UWP アプリは、別の UWP アプリまたはデスクトップ アプリを呼び出すことはできません。 回避策はありません。
_heapwalk _heapadd _heapchk _heapset _heapused 通常、これらの関数はヒープを操作するために使用されます。 ただし、対応する Win32 API は UWP アプリではサポートされていません。 また、アプリはプライベート ヒープを作成したり使用したりできなくなります。 回避策はありません。 ただし、デバッグ目的でのみ、 _heapwalk は DEBUG CRT で使用できます。 これらの関数は、Microsoft Store にアップロードされたアプリでは使用できません。

UWP アプリの CRT では、次の関数を使用できます。 ただし、大きなコード ベースを移植する場合など、対応する Win32 または Windows ランタイム API を使用できない場合にのみ使用してください。

機能 対処法
1 バイトの文字列関数 ( strcatstrcpystrlwrなど)。 公開されているすべての Win32 API と Windows ランタイム API では Unicode 文字セットのみが使用されるため、UWP アプリを厳密に Unicode にします。 1 バイト関数は、大規模なコード ベースを移植するために残されていますが、それ以外の場合は避ける必要があります。 可能な場合は、対応するワイド文字関数を代わりに使用する必要があります。
ストリーム IO および低レベルのファイル IO 関数 ( fopenopenなど)。 これらの関数は同期型であり、UWP アプリには推奨されません。 UWP アプリでは、非同期 API を使用してファイルの開き、読み取り、書き込みを行い、UI スレッドのロックを防ぎます。 このような API の例としては、 Windows::Storage::FileIO クラスの API があります。

Windows 8.x ストア アプリと Windows Phone 8.x アプリ

Windows 8.x ストア アプリと Windows Phone 8.x アプリでは、前述の API と次の API の両方を使用できません。

機能 説明 対処法
_beginthread _beginthreadex _endthread _endthreadex スレッド化 Win32 API は、Windows 8.x ストア アプリでは使用できません。 代わりに、 Windows Runtime Windows::System::Threading::ThreadPool または concurrency::task を使用してください。
_chdir _wchdir _getcwd _getdcwd _wgetcwd _wgetdcwd 作業ディレクトリの概念は、Windows 8.x ストア アプリには適用されません。 代わりに完全なパスを使用してください。
_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 マルチバイト文字列は、Windows 8.x ストア アプリではサポートされていません。 代わりに Unicode 文字列を使用してください。
_tzset 環境変数は、Windows 8.x ストア アプリでは使用できません。 回避策はありません。
_get_heap_handle_heapmin 対応する Win32 API は、Windows 8.x ストア アプリではサポートされていません。 また、アプリはプライベート ヒープを作成できなくなりました。 回避策はありません。 ただし、デバッグ目的でのみ、 _get_heap_handle は DEBUG CRT で使用できます。