ReactOS 0.4.17-dev-301-g9127a53
policy.cpp File Reference
#include <windef.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <shlwapi_undoc.h>
#include <shlguid_undoc.h>
#include <atlstr.h>
#include <strsafe.h>
#include <new>
#include <wine/debug.h>
Include dependency graph for policy.cpp:

Go to the source code of this file.

Classes

struct  tagSHPOLICY_RESULT
 
struct  tagSHPOLICY_CONSTRAINT
 
struct  tagSHPOLICY_ITEM
 
class  CPolicyCache
 

Macros

#define _ATL_NO_EXCEPTIONS
 

Typedefs

typedef enum tagPOLICY_STATE POLICY_STATE
 
typedef struct tagSHPOLICY_RESULT SHPOLICY_RESULT
 
typedef struct tagSHPOLICY_RESULTPSHPOLICY_RESULT
 
typedef struct tagSHPOLICY_CONSTRAINT SHPOLICY_CONSTRAINT
 
typedef struct tagSHPOLICY_CONSTRAINTPSHPOLICY_CONSTRAINT
 
typedef struct tagSHPOLICY_ITEM SHPOLICY_ITEM
 
typedef struct tagSHPOLICY_ITEMPSHPOLICY_ITEM
 

Enumerations

enum  tagPOLICY_STATE { POLICY_STATE_UNCACHED = 0 , POLICY_STATE_NOT_FOUND = 1 , POLICY_STATE_CACHED = 2 }
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (policy)
 
static BOOL SHPolicyCache_Create (VOID)
 
EXTERN_C VOID SHPolicyCache_DllProcessAttach (VOID)
 
EXTERN_C VOID SHPolicyCache_DllProcessDetach (VOID)
 
EXTERN_C HRESULT WINAPI SHWindowsPolicyGetValue (_In_ REFGUID rpolid, _Out_opt_ PVOID pvValue, _Out_opt_ PDWORD pcbValue)
 

Variables

static const SHPOLICY_CONSTRAINT c_Bool = { SRRF_RT_DWORD, sizeof(DWORD), 0, 1 }
 
static const SHPOLICY_CONSTRAINT c_String = { SRRF_RT_REG_SZ, sizeof(WCHAR), 0, 0 }
 
static const SHPOLICY_CONSTRAINT c_TriValue = { SRRF_RT_DWORD, sizeof(DWORD), 1, 3 }
 
static const SHPOLICY_CONSTRAINT c_Special = { SRRF_RT_DWORD, sizeof(DWORD), 0x1806, 0x1808 }
 
static const SHPOLICY_ITEM g_PolicyItems []
 
CPolicyCacheg_pPolicyCache = NULL
 
CRITICAL_SECTION g_csPolicyLock
 

Macro Definition Documentation

◆ _ATL_NO_EXCEPTIONS

#define _ATL_NO_EXCEPTIONS

Definition at line 8 of file policy.cpp.

Typedef Documentation

◆ POLICY_STATE

◆ PSHPOLICY_CONSTRAINT

◆ PSHPOLICY_ITEM

◆ PSHPOLICY_RESULT

◆ SHPOLICY_CONSTRAINT

◆ SHPOLICY_ITEM

◆ SHPOLICY_RESULT

Enumeration Type Documentation

◆ tagPOLICY_STATE

Enumerator
POLICY_STATE_UNCACHED 
POLICY_STATE_NOT_FOUND 
POLICY_STATE_CACHED 

Definition at line 21 of file policy.cpp.

22{
23 POLICY_STATE_UNCACHED = 0, // Uncached
24 POLICY_STATE_NOT_FOUND = 1, // Not found
25 POLICY_STATE_CACHED = 2, // Cached
enum tagPOLICY_STATE POLICY_STATE
@ POLICY_STATE_UNCACHED
Definition: policy.cpp:23
@ POLICY_STATE_CACHED
Definition: policy.cpp:25
@ POLICY_STATE_NOT_FOUND
Definition: policy.cpp:24

Function Documentation

◆ SHPolicyCache_Create()

static BOOL SHPolicyCache_Create ( VOID  )
static

Definition at line 245 of file policy.cpp.

246{
247 if (g_pPolicyCache)
248 return TRUE;
249
250 CPolicyCache* pCache = new(std::nothrow) CPolicyCache;
251 if (!pCache)
252 return FALSE;
253
255 {
256 delete pCache;
257 return FALSE;
258 }
259
260 g_pPolicyCache = pCache;
261 return TRUE;
262}
BOOL Initialize(const SHPOLICY_ITEM *pItems, UINT cItems)
Definition: policy.cpp:88
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
CPolicyCache * g_pPolicyCache
Definition: policy.cpp:241
static const SHPOLICY_ITEM g_PolicyItems[]
Definition: policy.cpp:58
#define _countof(array)
Definition: sndvol32.h:70

Referenced by SHWindowsPolicyGetValue().

◆ SHPolicyCache_DllProcessAttach()

EXTERN_C VOID SHPolicyCache_DllProcessAttach ( VOID  )

Definition at line 264 of file policy.cpp.

265{
267}
CRITICAL_SECTION g_csPolicyLock
Definition: policy.cpp:242
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:687

Referenced by DllMain().

◆ SHPolicyCache_DllProcessDetach()

EXTERN_C VOID SHPolicyCache_DllProcessDetach ( VOID  )

Definition at line 269 of file policy.cpp.

270{
271 CPolicyCache* pCache;
272
274 pCache = g_pPolicyCache;
277
278 delete pCache;
280}
#define NULL
Definition: types.h:112
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)

Referenced by DllMain().

◆ SHWindowsPolicyGetValue()

EXTERN_C HRESULT WINAPI SHWindowsPolicyGetValue ( _In_ REFGUID  rpolid,
_Out_opt_ PVOID  pvValue,
_Out_opt_ PDWORD  pcbValue 
)

Definition at line 289 of file policy.cpp.

293{
294 HRESULT hr = E_FAIL;
295
298 hr = g_pPolicyCache->GetValue(rpolid, pvValue, pcbValue);
300 return hr;
301}
HRESULT GetValue(_In_ REFGUID rpolid, _Out_opt_ PVOID pvValue, _Out_opt_ PDWORD pcbValue)
Definition: policy.cpp:143
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
static BOOL SHPolicyCache_Create(VOID)
Definition: policy.cpp:245

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( policy  )

Variable Documentation

◆ c_Bool

const SHPOLICY_CONSTRAINT c_Bool = { SRRF_RT_DWORD, sizeof(DWORD), 0, 1 }
static

Definition at line 44 of file policy.cpp.

◆ c_Special

const SHPOLICY_CONSTRAINT c_Special = { SRRF_RT_DWORD, sizeof(DWORD), 0x1806, 0x1808 }
static

Definition at line 47 of file policy.cpp.

◆ c_String

const SHPOLICY_CONSTRAINT c_String = { SRRF_RT_REG_SZ, sizeof(WCHAR), 0, 0 }
static

Definition at line 45 of file policy.cpp.

◆ c_TriValue

const SHPOLICY_CONSTRAINT c_TriValue = { SRRF_RT_DWORD, sizeof(DWORD), 1, 3 }
static

Definition at line 46 of file policy.cpp.

◆ g_csPolicyLock

◆ g_PolicyItems

const SHPOLICY_ITEM g_PolicyItems[]
static
Initial value:
=
{
{ POLID_UsePathEnvVarForCommandTemplates, L"Explorer", L"UsePathEnvVarForCommandTemplates",
&c_Bool },
{ POLID_ScanWithAntiVirus, L"Attachments", L"ScanWithAntiVirus", &c_TriValue },
{ POLID_SaveZoneInformation, L"Attachments", L"SaveZoneInformation", &c_TriValue },
{ POLID_UseTrustedHandlers, L"Attachments", L"UseTrustedHandlers", &c_TriValue },
{ POLID_HideZoneInfoOnProperties, L"Attachments", L"HideZoneInfoOnProperties", &c_Bool },
{ POLID_DefaultFileTypeRisk, L"Associations", L"DefaultFileTypeRisk", &c_Special },
{ POLID_HighRiskFileTypes, L"Associations", L"HighRiskFileTypes", &c_String },
{ POLID_ModRiskFileTypes, L"Associations", L"ModRiskFileTypes", &c_String },
{ POLID_LowRiskFileTypes, L"Associations", L"LowRiskFileTypes", &c_String },
{ POLID_PreXPSP2ShellProtocolBehavior, L"Explorer", L"PreXPSP2ShellProtocolBehavior", &c_Bool },
{ POLID_CompareJunctionness, L"Explorer", L"CompareJunctionness", &c_Bool },
}
#define L(x)
Definition: resources.c:13
static const SHPOLICY_CONSTRAINT c_String
Definition: policy.cpp:45
static const SHPOLICY_CONSTRAINT c_Special
Definition: policy.cpp:47
static const SHPOLICY_CONSTRAINT c_TriValue
Definition: policy.cpp:46
static const SHPOLICY_CONSTRAINT c_Bool
Definition: policy.cpp:44

Definition at line 58 of file policy.cpp.

Referenced by SHPolicyCache_Create().

◆ g_pPolicyCache

CPolicyCache* g_pPolicyCache = NULL