ユニバーサル 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_s tzset |
環境変数は、UWP アプリでは使用できません。 | 回避策はありません。 タイム ゾーンを設定するには、 _tzset を使用します。 |
_loaddll
_getdllprocaddr
_unloaddll
|
これらは以前の CRT バージョンでは古い関数でした。 また、ユーザーは、同じアプリケーション パッケージ内のものを除いて DLL を読み込むことはありません。 | パッケージ化された DLL を読み込んで使用するには、Win32 API LoadPackagedLibrary 、 GetProcAddress 、および 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 バイトの文字列関数 ( strcat 、 strcpy 、 strlwr など)。 |
公開されているすべての Win32 API と Windows ランタイム API では Unicode 文字セットのみが使用されるため、UWP アプリを厳密に Unicode にします。 1 バイト関数は、大規模なコード ベースを移植するために残されていますが、それ以外の場合は避ける必要があります。 可能な場合は、対応するワイド文字関数を代わりに使用する必要があります。 |
ストリーム IO および低レベルのファイル IO 関数 ( fopen 、 open など)。 |
これらの関数は同期型であり、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 _mbsdup isleadbyte |
マルチバイト文字列は、Windows 8.x ストア アプリではサポートされていません。 | 代わりに Unicode 文字列を使用してください。 |
_tzset |
環境変数は、Windows 8.x ストア アプリでは使用できません。 | 回避策はありません。 |
_get_heap_handle 、_heapmin |
対応する Win32 API は、Windows 8.x ストア アプリではサポートされていません。 また、アプリはプライベート ヒープを作成できなくなりました。 | 回避策はありません。 ただし、デバッグ目的でのみ、 _get_heap_handle は DEBUG CRT で使用できます。 |