Подтвердить что ты не робот

Windows 8 ARM, A.K.A. "Windows RT" имеет Winapi (win32) для сторонних разработчиков?

Windows 8 для ARM, также известный как Windows RT, имеет ли он эквивалент Win32 API?

(Я не имею в виду, может ли он запускать код Win32 x86, но если у него есть API Win32, доступный сторонним разработчикам.)

4b9b3361

Ответ 1

Нет. Вернее, да, но не так, как мы знали, Win32. Небольшое подмножество Win32 доступно для приложений WinRT для использования, а приложения WinRT - единственное, что можно запустить в Windows RT. ( "Windows 8 для ARM." )

Сторонние разработчики приложений могут получить доступ, но часть классического API Win32.

Ответ 2

Да, версия 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/

Ответ 3

Как отметил Игорь Скочинский, Windows RT имеет (почти) те же API Win32, что и Windows для x86. Если вы пишете приложение "Metro" с использованием С++ и WinRT, вы сможете называть эти функции по своему усмотрению. Однако вы не можете получить такое приложение в Windows Store, так как это, скорее всего, не даст автоматических тестов. Вы можете запускать его только под лицензией разработчика, который является специальным режимом разработки, который позволяет вам загружать приложения на ваше устройство. (Отказ от ответственности: Это основано на моих экспериментах с Windows 8 для x86 и документации, которую я прочитал. Я не пробовал это на реальной Surface RT. Могут быть дополнительные блоки, которые предотвращают запуск вашего приложения.)

Кроме того, вы не можете запускать свои настольные приложения в Windows RT, поскольку Windows проверяет подпись исполняемого файла и запускает его только в том случае, если он подписан Microsoft. (Вероятно, это будет происходить, например, с помощью Jailbraking или путем самозаписывания ваших исполняемых файлов. Я открыл вопрос по этой теме, кстати.)