天天看點

C語言運作時庫中哪些API在UWP中不可用?



_beep _sleep _seterrormode 這些函數在以前版本的 CRT 中已過時。 此外,對應 Win32 API 不可用于 UWP 應用。 無解決方法。
chdir _chdrive getcwd 這些函數已過時或不是線程安全的。 使用 _chdir、_getcwd 及相關函數。

_cgets *

_cputs *

_cprintf *

_cscanf *

_getc getch ungetch *

這些函數用于直接從控制台讀取和寫入控制台。 UWP 應用僅限 GUI;它們不支援控制台。 無解決方法。
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

UWP 應用中不支援端口 IO。 無解決方法。

_ismbc*

_mbs* 

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 加載和使用打包的 DLL。

_wexe*

_exe*

_wspawn*

_spawn*

Spawn*

system

該功能在 UWP 應用中不可用。 UWP 應用無法調用另一個 UWP 應用或桌面應用。 無解決方法。

_heapwalk _heapadd _heapchk

 _heapset _heapused

這些函數通常用于處理堆。 但是,UWP 應用中不支援對應 Win32 API。 而且,應用無法再建立或使用專用堆。 無解決方法。 但是,_heapwalk 在 DEBUG CRT 中可用(僅用于進行調試)。 這些函數無法在上載到 Windows 應用商店的應用中使用。

以下函數在 CRT 中可用于 UWP 應用,但應僅當無法使用對應 Win32 或 Windows 運作時 API 時才使用(例如,要移植大型基本代碼時)。

單位元組字元串函數(例如,strcat、strcpy、strlwr 等)。 使 UWP 應用嚴格遵循 Unicode 标準,因為公開的所有 Win32 API 和 Windows 運作時 API 都僅使用 Unicode 字元集。 保留了單位元組函數,以便用于移植大型基本代碼,但在其他情況下應避免使用,并且應盡可能改用對應的寬字元函數。
流 IO 和低級檔案 IO 函數(例如,fopen、open 等)。 這些函數是同步的,不推薦用于 UWP 應用。 在 UWP 應用中,使用異步 API 打開、讀取和寫入檔案,以防止鎖定 UI 線程。 這類 API 的示例是在 Windows::Storage::FileIO 類中的一個。

繼續閱讀