11template<
typename TPolicy>
14 typename TPolicy::appmodel_policy_type appmodelPolicy = defaultValue;
20 TPolicy::appmodel_get_policy(&appmodelPolicy);
23 return TPolicy::appmodel_policy_to_policy_type(appmodelPolicy);
26template<
typename TPolicy>
29 static long state_cache = 0;
30 if (
long const cached_state = __crt_interlocked_read(&state_cache))
32 return static_cast<typename TPolicy::policy_type
>(cached_state);
35 typename TPolicy::appmodel_policy_type appmodelPolicy = defaultValue;
41 TPolicy::appmodel_get_policy(&appmodelPolicy);
44 typename TPolicy::policy_type
const policyValue = TPolicy::appmodel_policy_to_policy_type(appmodelPolicy);
49 _ASSERTE(cached_state ==
static_cast<long>(policyValue));
58 struct process_end_policy_properties
63 static policy_type appmodel_policy_to_policy_type(appmodel_policy_type
const appmodelPolicy)
throw()
75 static LONG appmodel_get_policy(appmodel_policy_type* appmodelPolicy)
87 struct begin_thread_init_policy_properties
94 static policy_type appmodel_policy_to_policy_type(
long const appmodelPolicy)
throw()
106 static LONG appmodel_get_policy(appmodel_policy_type* appmodelPolicy)
118 struct developer_information_policy_properties
125 static policy_type appmodel_policy_to_policy_type(
long const appmodelPolicy)
throw()
137 static LONG appmodel_get_policy(appmodel_policy_type* appmodelPolicy)
149 struct windowing_model_policy_properties
156 static policy_type appmodel_policy_to_policy_type(
long const appmodelPolicy)
throw()
158 switch (appmodelPolicy)
175 static LONG appmodel_get_policy(appmodel_policy_type* appmodelPolicy)
AppPolicyShowDeveloperDiagnostic
@ AppPolicyShowDeveloperDiagnostic_ShowUI
AppPolicyThreadInitializationType
@ AppPolicyThreadInitializationType_None
@ AppPolicyThreadInitializationType_InitializeWinRT
@ AppPolicyWindowingModel_ClassicDesktop
@ AppPolicyWindowingModel_Universal
@ AppPolicyWindowingModel_None
@ AppPolicyWindowingModel_ClassicPhone
AppPolicyProcessTerminationMethod
@ AppPolicyProcessTerminationMethod_TerminateProcess
@ AppPolicyProcessTerminationMethod_ExitProcess
LONG WINAPI __acrt_AppPolicyGetThreadInitializationTypeInternal(_Out_ AppPolicyThreadInitializationType *policy)
developer_information_policy
@ developer_information_policy_ui
@ developer_information_policy_unknown
@ developer_information_policy_none
LONG WINAPI __acrt_AppPolicyGetWindowingModelInternal(_Out_ AppPolicyWindowingModel *policy)
LONG WINAPI __acrt_AppPolicyGetProcessTerminationMethodInternal(_Out_ AppPolicyProcessTerminationMethod *policy)
@ process_end_policy_terminate_process
@ process_end_policy_exit_process
@ windowing_model_policy_legacyphone
@ windowing_model_policy_unknown
@ windowing_model_policy_none
@ windowing_model_policy_corewindow
@ windowing_model_policy_hwnd
LONG WINAPI __acrt_AppPolicyGetShowDeveloperDiagnosticInternal(_Out_ AppPolicyShowDeveloperDiagnostic *policy)
bool __cdecl __acrt_is_secure_process(void)
@ begin_thread_init_policy_ro_initialize
@ begin_thread_init_policy_unknown
@ begin_thread_init_policy_none
long __cdecl _InterlockedExchange(_Interlocked_operand_ long volatile *_Target, long _Value)
windowing_model_policy __cdecl __acrt_get_windowing_model_policy()
static TPolicy::policy_type __cdecl get_win_policy(typename TPolicy::appmodel_policy_type defaultValue)
process_end_policy __cdecl __acrt_get_process_end_policy()
static TPolicy::policy_type __cdecl get_cached_win_policy(typename TPolicy::appmodel_policy_type defaultValue)
begin_thread_init_policy __cdecl __acrt_get_begin_thread_init_policy()
developer_information_policy __cdecl __acrt_get_developer_information_policy()