Is there a new macro to determine in code if the application is running on WinRT? As I'm working with LoadLibrary
, it would be great if there is a macro to replace all calls to LoadLibrary
with one to LoadPackagedLibrary
...
I'm understanding the documentation correct as in I can load any DLL (as long as it's inside my package) via LoadPackagedLibrary
, right?! (And as long as that DLL doesn't use black-listed APIs...)
I recently updated to Visual Studio 2012, and think I found the answer to my question:
Inside the Microsoft Headers the Macro WINAPI_FAMILY_PARTITION
is used to determine the "Level" of WinAPI. Currently there are WINAPI_PARTITION_DESKTOP
and WINAPI_PARTITION_APP
, therefore I "guess" that via this macro one can differentiate between Desktop and Metro...
The two macros lead to another set of macros: #define WINAPI_FAMILY_APP WINAPI_PARTITION_APP
and #define WINAPI_FAMILY_DESKTOP_APP (WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_APP)
. Therefore if WINAPI_FAMILY_APP
is defined one should be able to assume that it's a Metro application...
To add your to answer, please see this article Dual-use Coding Techniques for Games
In the introduction part
Apps written for the Windows Store make use of the Windows Runtime
(WinRT) and a restricted subset of Win32 APIs located in the core API
family (indicated by WINAPI_FAMILY set to WINAPI_PARTITION_APP).
Traditional Win32 desktop apps have access to a larger desktop API
family (indicated by WINAPI_FAMILY set to WINAPI_PARTITION_DESKTOP),
but this is subject to various levels of OS support required for each
function
Try __WRL_WINRT_STRICT__
. Not entirely sure that's the right one, but if you go look in that file it will probably have what you want.
From here and here.