Windows 8 для ARM, также известный как Windows RT, имеет ли он эквивалент Win32 API?
(Я не имею в виду, может ли он запускать код Win32 x86, но если у него есть API Win32, доступный сторонним разработчикам.)
Windows 8 для ARM, также известный как Windows RT, имеет ли он эквивалент Win32 API?
(Я не имею в виду, может ли он запускать код Win32 x86, но если у него есть API Win32, доступный сторонним разработчикам.)
Нет. Вернее, да, но не так, как мы знали, Win32. Небольшое подмножество Win32 доступно для приложений WinRT для использования, а приложения WinRT - единственное, что можно запустить в Windows RT. ( "Windows 8 для ARM." )
Сторонние разработчики приложений могут получить доступ, но часть классического API Win32.
Да, версия ARM будет поддерживать те же API-интерфейсы, что и сборки x86 и x64, возможно, с некоторыми небольшими различиями в специфических для архитектуры материалах, таких как обработка исключений.
Например, здесь список API, который импортирует версию MVV версии msvcrt110.dll из kernel32:
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/
Как отметил Игорь Скочинский, Windows RT имеет (почти) те же API Win32, что и Windows для x86. Если вы пишете приложение "Metro" с использованием С++ и WinRT, вы сможете называть эти функции по своему усмотрению. Однако вы не можете получить такое приложение в Windows Store, так как это, скорее всего, не даст автоматических тестов. Вы можете запускать его только под лицензией разработчика, который является специальным режимом разработки, который позволяет вам загружать приложения на ваше устройство. (Отказ от ответственности: Это основано на моих экспериментах с Windows 8 для x86 и документации, которую я прочитал. Я не пробовал это на реальной Surface RT. Могут быть дополнительные блоки, которые предотвращают запуск вашего приложения.)
Кроме того, вы не можете запускать свои настольные приложения в Windows RT, поскольку Windows проверяет подпись исполняемого файла и запускает его только в том случае, если он подписан Microsoft. (Вероятно, это будет происходить, например, с помощью Jailbraking или путем самозаписывания ваших исполняемых файлов. Я открыл вопрос по этой теме, кстати.)