Create a branch for network fixes.
[reactos.git] / include / psdk / aclui.h
1 /*
2 * aclui.h
3 *
4 * Access Control List Editor definitions
5 *
6 * THIS SOFTWARE IS NOT COPYRIGHTED
7 *
8 * This source code is offered for use in the public domain. You may
9 * use, modify or distribute it freely.
10 *
11 * This code is distributed in the hope that it will be useful but
12 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
13 * DISCLAIMED. This includes but is not limited to warranties of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 *
16 */
17
18 #ifndef __ACLUI_H
19 #define __ACLUI_H
20 #if __GNUC__ >=3
21 #pragma GCC system_header
22 #endif
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 #include <unknwn.h>
29 #include <accctrl.h>
30 #include <commctrl.h>
31
32 DEFINE_GUID(IID_ISecurityInformation, 0x965fc360, 0x16ff, 0x11d0, 0x0091, 0xcb,0x00,0xaa,0x00,0xbb,0xb7,0x23);
33 DEFINE_GUID(IID_ISecurityInformation2, 0xc3ccfdb4, 0x6f88, 0x11d2, 0x00a3, 0xce,0x00,0xc0,0x4f,0xb1,0x78,0x2a);
34 DEFINE_GUID(IID_IEffectivePermission, 0x3853dc76, 0x9f35, 0x407c, 0x0088, 0xa1,0xd1,0x93,0x44,0x36,0x5f,0xbc);
35 DEFINE_GUID(IID_ISecurityObjectTypeInfo, 0xfc3066eb, 0x79ef, 0x444b, 0x0091, 0x11,0xd1,0x8a,0x75,0xeb,0xf2,0xfa);
36
37 typedef interface ISecurityInformation *LPSECURITYINFO;
38 typedef interface ISecurityInformation2 *LPSECURITYINFO2;
39 typedef interface IEffectivePermission *LPEFFECTIVEPERMISSION;
40 typedef interface ISecurityObjectTypeInfo *LPSecurityObjectTypeInfo;
41
42 #undef INTERFACE
43 EXTERN_C const IID IID_ISecurityInformation;
44 #define INTERFACE ISecurityInformation
45 DECLARE_INTERFACE_(ISecurityInformation,IUnknown)
46 {
47 /* IUnknown */
48 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
49 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
50 STDMETHOD_(ULONG,Release)(THIS) PURE;
51
52 /* ISecurityInformation */
53 STDMETHOD(GetObjectInformation)(THIS_ PSI_OBJECT_INFO) PURE;
54 STDMETHOD(GetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR*,BOOL) PURE;
55 STDMETHOD(SetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR) PURE;
56 STDMETHOD(GetAccessRights)(THIS_ GUID*,DWORD,PSI_ACCESS*,ULONG*,ULONG*) PURE;
57 STDMETHOD(MapGeneric)(THIS_ GUID*,UCHAR*,PSI_ACCESS*) PURE;
58 STDMETHOD(GetInheritTypes)(THIS_ PSI_INHERIT_TYPE*,ULONG*) PURE;
59 STDMETHOD(PropertySheetPageCallback)(THIS_ HWND,UINT,SI_PAGE_TYPE) PURE;
60 };
61 #undef INTERFACE
62
63 #undef INTERFACE
64 #define INTERFACE ISecurityInformation2
65 DECLARE_INTERFACE_(ISecurityInformation2,IUnknown)
66 {
67 /* IUnknown */
68 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
69 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
70 STDMETHOD_(ULONG,Release)(THIS) PURE;
71
72 /* ISecurityInformation2 */
73 STDMETHOD(IsDaclCanonical)(THIS_ PACL) PURE;
74 STDMETHOD(LookupSids)(THIS_ ULONG,PSID*,LPDATAOBJECT*) PURE;
75 };
76 #undef INTERFACE
77
78 #undef INTERFACE
79 #define INTERFACE IEffectivePermission
80 DECLARE_INTERFACE_(IEffectivePermission,IUnknown)
81 {
82 /* IUnknown */
83 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
84 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
85 STDMETHOD_(ULONG,Release)(THIS) PURE;
86
87 /* IEffectivePermission */
88 STDMETHOD(GetEffectivePermission)(THIS_ GUID*,PSID,LPCWSTR,PSECURITY_DESCRIPTOR,POBJECT_TYPE_LIST*,ULONG*,PACCESS_MASK*,ULONG*) PURE;
89 };
90 #undef INTERFACE
91
92 #undef INTERFACE
93 #define INTERFACE ISecurityObjectTypeInfo
94 DECLARE_INTERFACE_(ISecurityObjectTypeInfo,IUnknown)
95 {
96 /* IUnknown */
97 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
98 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
99 STDMETHOD_(ULONG,Release)(THIS) PURE;
100
101 /* ISecurityObjectTypeInfo */
102 STDMETHOD(GetInheritSource)(THIS_ SECURITY_INFORMATION,PACL,PINHERITED_FROM*) PURE;
103 };
104 #undef INTERFACE
105
106 HPROPSHEETPAGE WINAPI
107 CreateSecurityPage(LPSECURITYINFO psi);
108
109 BOOL WINAPI
110 EditSecurity(HWND hwndOwner, LPSECURITYINFO psi);
111
112 #ifdef __cplusplus
113 }
114 #endif
115 #endif /* __ACLUI_H */
116
117 /* EOF */