1 #ifndef _REGEXP_SECURITY_H
2 #define _REGEXP_SECURITY_H
5 InitializeAclUiDll(VOID
);
10 #define REGEDIT_IMPLEMENT_ISECURITYINFORMATION2 0
12 /******************************************************************************
14 ******************************************************************************/
16 typedef struct ISecurityInformation
*LPSECURITYINFORMATION
;
18 typedef struct ifaceISecuritInformationVbtl ifaceISecurityInformationVbtl
;
19 struct ifaceISecurityInformationVbtl
22 HRESULT (STDMETHODCALLTYPE
*QueryInterface
)(struct ISecurityInformation
*this,
25 ULONG (STDMETHODCALLTYPE
*AddRef
)(struct ISecurityInformation
*this);
26 ULONG (STDMETHODCALLTYPE
*Release
)(struct ISecurityInformation
*this);
28 /* ISecurityInformation */
29 HRESULT (STDMETHODCALLTYPE
*GetObjectInformation
)(struct ISecurityInformation
*this,
30 PSI_OBJECT_INFO pObjectInfo
);
31 HRESULT (STDMETHODCALLTYPE
*GetSecurity
)(struct ISecurityInformation
*this,
32 SECURITY_INFORMATION RequestedInformation
,
33 PSECURITY_DESCRIPTOR
* ppSecurityDescriptor
,
35 HRESULT (STDMETHODCALLTYPE
*SetSecurity
)(struct ISecurityInformation
*this,
36 SECURITY_INFORMATION RequestedInformation
,
37 PSECURITY_DESCRIPTOR pSecurityDescriptor
);
38 HRESULT (STDMETHODCALLTYPE
*GetAccessRights
)(struct ISecurityInformation
*this,
39 const GUID
* pguidObjectType
,
43 ULONG
* piDefaultAccess
);
44 HRESULT (STDMETHODCALLTYPE
*MapGeneric
)(struct ISecurityInformation
*this,
45 const GUID
* pguidObjectType
,
48 HRESULT (STDMETHODCALLTYPE
*GetInheritTypes
)(struct ISecurityInformation
*this,
49 PSI_INHERIT_TYPE
* ppInheritTypes
,
50 ULONG
* pcInheritTypes
);
51 HRESULT (STDMETHODCALLTYPE
*PropertySheetPageCallback
)(struct ISecurityInformation
*this,
57 #if REGEDIT_IMPLEMENT_ISECURITYINFORMATION2
58 /******************************************************************************
60 ******************************************************************************/
62 typedef struct ISecurityInformation2
*LPSECURITYINFORMATION2
;
64 typedef struct ifaceISecurityInformation2Vbtl ifaceISecurityInformation2Vbtl
;
65 struct ifaceISecurityInformation2Vbtl
68 HRESULT (STDMETHODCALLTYPE
*QueryInterface
)(struct ISecurityInformation2
*this,
71 ULONG (STDMETHODCALLTYPE
*AddRef
)(struct ISecurityInformation2
*this);
72 ULONG (STDMETHODCALLTYPE
*Release
)(struct ISecurityInformation2
*this);
74 /* ISecurityInformation2 */
75 BOOL (STDMETHODCALLTYPE
*IsDaclCanonical
)(struct ISecurityInformation2
*this,
77 HRESULT (STDMETHODCALLTYPE
*LookupSids
)(struct ISecurityInformation2
*this,
84 /******************************************************************************
86 ******************************************************************************/
88 typedef struct IEffectivePermission
*LPEFFECTIVEPERMISSION
;
90 typedef struct ifaceIEffectivePermissionVbtl ifaceIEffectivePermissionVbtl
;
91 struct ifaceIEffectivePermissionVbtl
94 HRESULT (STDMETHODCALLTYPE
*QueryInterface
)(struct IEffectivePermission
*this,
97 ULONG (STDMETHODCALLTYPE
*AddRef
)(struct IEffectivePermission
*this);
98 ULONG (STDMETHODCALLTYPE
*Release
)(struct IEffectivePermission
*this);
100 /* IEffectivePermission */
101 HRESULT (STDMETHODCALLTYPE
*GetEffectivePermission
)(struct IEffectivePermission
*this,
102 const GUID
* pguidObjectType
,
104 LPCWSTR pszServerName
,
105 PSECURITY_DESCRIPTOR pSD
,
106 POBJECT_TYPE_LIST
* ppObjectTypeList
,
107 ULONG
* pcObjectTypeListLength
,
108 PACCESS_MASK
* ppGrantedAccessList
,
109 ULONG
* pcGrantedAccessListLength
);
112 /******************************************************************************
113 ISecurityObjectTypeInfo
114 ******************************************************************************/
116 typedef struct ISecurityObjectTypeInfo
*LPSECURITYOBJECTTYPEINFO
;
118 typedef struct ifaceISecurityObjectTypeInfoVbtl ifaceISecurityObjectTypeInfoVbtl
;
119 struct ifaceISecurityObjectTypeInfoVbtl
122 HRESULT (STDMETHODCALLTYPE
*QueryInterface
)(struct ISecurityObjectTypeInfo
*this,
125 ULONG (STDMETHODCALLTYPE
*AddRef
)(struct ISecurityObjectTypeInfo
*this);
126 ULONG (STDMETHODCALLTYPE
*Release
)(struct ISecurityObjectTypeInfo
*this);
128 /* ISecurityObjectTypeInfo */
129 HRESULT (STDMETHODCALLTYPE
*GetInheritSource
)(struct ISecurityObjectTypeInfo
*this,
130 SECURITY_INFORMATION si
,
132 PINHERITED_FROM
* ppInheritArray
);
135 /******************************************************************************
137 ******************************************************************************/
139 typedef struct _CRegKeySecurity
141 /* IUnknown fields and interfaces */
142 const struct ifaceISecurityInformationVbtl
*lpISecurityInformationVtbl
;
143 #if REGEDIT_IMPLEMENT_ISECURITYINFORMATION2
144 const struct ifaceISecurityInformation2Vbtl
*lpISecurityInformation2Vtbl
;
146 const struct ifaceIEffectivePermissionVbtl
*lpIEffectivePermissionVtbl
;
147 const struct ifaceISecurityObjectTypeInfoVbtl
*lpISecurityObjectTypeInfoVtbl
;
150 /* CRegKeySecurity fields */
151 SI_OBJECT_INFO ObjectInfo
;
155 } CRegKeySecurity
, *PCRegKeySecurity
;
157 #endif /* _REGEXP_SECURITY_H */