Имеет ли Windows 8 ARM, AKA "Windows RT" Winapi (win32), доступный для сторонних разработчиков? - PullRequest
10 голосов
/ 24 ноября 2011

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

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

Ответы [ 3 ]

11 голосов
/ 24 ноября 2011

Да, версия ARM будет поддерживать те же API, что и сборки x86 и x64, возможно, с некоторыми небольшими различиями в специфических для архитектуры вещах, таких как обработка исключений.

Например, вот список API, которые ARMверсия 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 голосов
/ 19 ноября 2012

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

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

0 голосов
/ 22 октября 2012

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

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

...