ReactOS 0.4.17-dev-218-g5635d24
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 <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 20 of file policy.cpp.

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

Function Documentation

◆ SHPolicyCache_Create()

static BOOL SHPolicyCache_Create ( VOID  )
static

Definition at line 255 of file policy.cpp.

256{
257 if (g_pPolicyCache)
258 return TRUE;
259
260 CPolicyCache *pCache = new CPolicyCache;
261 if (!pCache)
262 return FALSE;
263
265 {
266 delete pCache;
267 return FALSE;
268 }
269
270 g_pPolicyCache = pCache;
271 return TRUE;
272}
BOOL Initialize(const SHPOLICY_ITEM *pItems, UINT cItems)
Definition: policy.cpp:98
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
CPolicyCache * g_pPolicyCache
Definition: policy.cpp:251
static const SHPOLICY_ITEM g_PolicyItems[]
Definition: policy.cpp:57
#define _countof(array)
Definition: sndvol32.h:70

Referenced by SHWindowsPolicyGetValue().

◆ SHPolicyCache_DllProcessAttach()

EXTERN_C VOID SHPolicyCache_DllProcessAttach ( VOID  )

Definition at line 274 of file policy.cpp.

275{
277}
CRITICAL_SECTION g_csPolicyLock
Definition: policy.cpp:252
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 279 of file policy.cpp.

280{
281 CPolicyCache* pCache;
282
284 pCache = g_pPolicyCache;
287
288 delete pCache;
290}
#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 299 of file policy.cpp.

303{
304 HRESULT hr = E_FAIL;
305
308 hr = g_pPolicyCache->GetValue(rpolid, pvValue, pcbValue);
310 return hr;
311}
HRESULT GetValue(_In_ REFGUID rpolid, _Out_opt_ PVOID pvValue, _Out_opt_ PDWORD pcbValue)
Definition: policy.cpp:153
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
static BOOL SHPolicyCache_Create(VOID)
Definition: policy.cpp:255

◆ 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 43 of file policy.cpp.

◆ c_Special

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

Definition at line 46 of file policy.cpp.

◆ c_String

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

Definition at line 44 of file policy.cpp.

◆ c_TriValue

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

Definition at line 45 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:44
static const SHPOLICY_CONSTRAINT c_Special
Definition: policy.cpp:46
static const SHPOLICY_CONSTRAINT c_TriValue
Definition: policy.cpp:45
static const SHPOLICY_CONSTRAINT c_Bool
Definition: policy.cpp:43

Definition at line 57 of file policy.cpp.

Referenced by SHPolicyCache_Create().

◆ g_pPolicyCache

CPolicyCache* g_pPolicyCache = NULL