Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Macro to recognize WinRT?

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...)

like image 628
MFH Avatar asked Aug 14 '12 22:08

MFH


2 Answers

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...

like image 67
MFH Avatar answered Sep 29 '22 07:09

MFH


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

like image 26
onmyway133 Avatar answered Sep 29 '22 06:09

onmyway133