Windows 8 for ARM,也称为Windows RT,是否具有与Win32 API相同的功能?
(我不意味着它是否可以运行Win32 x86代码,但是如果它有可用的Win32 API 到第三方开发人员。)
答案 0 :(得分:11)
是的,ARM版本将支持与x86和x64版本相同的API,可能在特定于体系结构的内容(如异常处理)方面略有不同。
例如,以下是msvcrt110.dll的ARM版本从kernel32导入的API列表:
Setting environment for using Microsoft Visual Studio 2010 x86 tools.
Microsoft (R) COFF/PE Dumper Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file arm_msvcr110d_win8.pe
File Type: DLL
Section contains the following imports:
KERNEL32.dll
100E4000 Import Address Table
1012DA80 Import Name Table
0 time date stamp
0 Index of first forwarder reference
108 DecodePointer
12E EncodePointer
498 RtlPcToFileHeader
425 RaiseException
269 GetModuleFileNameA
26A GetModuleFileNameW
1AA FreeEnvironmentStringsW
26D GetModuleHandleExW
2A1 GetProcAddress
160 ExitProcess
3C7 MultiByteToWideChar
258 GetLastError
26E GetModuleHandleW
2C4 GetStdHandle
5C1 WriteFile
1D3 GetCommandLineA
1D4 GetCommandLineW
19D FlsGetValue
19E FlsSetValue
21A GetCurrentThreadId
[...]
4B1 SetConsoleCtrlHandler
361 IsDebuggerPresent
2F7 GetTickCount64
3F0 OutputDebugStringA
38C LCMapStringA
232 GetEnvironmentVariableA
233 GetEnvironmentVariableW
36E IsValidLocaleName
38D LCMapStringEx
339 HeapReAlloc
33B HeapSize
338 HeapQueryInformation
如您所见,所有这些都是标准的Win32内容。
另见http://getwired.com/2011/09/20/win32-the-reports-of-my-death-are-greatly-exaggerated/
答案 1 :(得分:3)
正如Igor Skochinsky指出的那样,Windows RT(几乎)与Windows版x86相同的Win32 API。如果您使用C ++和WinRT编写“Metro”应用程序,您应该可以根据需要调用这些函数。但是,您无法将此类应用程序放入Windows应用商店,因为它很可能无法通过自动化测试。您只能在“开发人员许可”下运行它,这是一种特殊的开发模式,允许您将应用程序侧载到您的设备上。 (免责声明:这是基于我在Windows 8 for x86上的实验,以及我读过的文档。我没有在实际的Surface RT上尝试过这个。可能还有其他的块阻止你的应用程序运行。)< / p>
此外,您无法在Windows RT上运行自己的桌面应用程序,因为Windows会检查可执行文件的签名,并且只有在Microsoft签名时才会运行它。 (通过Jailbraking,或通过自签名你的可执行文件,可能会解决这个问题。我已经打开了a question on that topic,顺便说一句。)
答案 2 :(得分:0)
没有。或者更确切地说,是的,但不是我们所知道的,Win32。 Win32的一小部分可供WinRT应用程序使用,而WinRT应用程序是唯一可以在Windows RT上运行的应用程序。 (“Windows 8 for ARM。”)
第三方应用开发者只能访问经典Win32 API的一小部分。