Welcome to mirror list, hosted at ThFree Co, Russian Federation.

aclui.h « include « w32api « winsup - cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 016bc73af06414fde5fbcee44a18dc917ad598c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#ifndef _ACLUI_H
#define _ACLUI_H
#if __GNUC__ >= 3
#pragma GCC system_header
#endif

#ifndef __OBJC__
#include <objbase.h>
#include <commctrl.h>
#include <accctrl.h>
#endif

#if !defined(_ACLUI_)
#define ACLUIAPI	DECLSPEC_IMPORT WINAPI
#else
#define ACLUIAPI	WINAPI
#endif

#ifdef __cplusplus
extern "C" {
#endif

typedef struct _SI_OBJECT_INFO
{
	DWORD dwFlags;
	HINSTANCE hInstance;
	LPWSTR pszServerName;
	LPWSTR pszObjectName;
	LPWSTR pszPageTitle;
	GUID guidObjectType;
} SI_OBJECT_INFO, *PSI_OBJECT_INFO;

/* values for SI_OBJECT_INFO.dwFlags */
#define SI_EDIT_PERMS				0x00000000L
#define SI_EDIT_OWNER				0x00000001L
#define SI_EDIT_AUDITS				0x00000002L
#define SI_CONTAINER				0x00000004L
#define SI_READONLY					0x00000008L
#define SI_ADVANCED					0x00000010L
#define SI_RESET					0x00000020L
#define SI_OWNER_READONLY			0x00000040L
#define SI_EDIT_PROPERTIES			0x00000080L
#define SI_OWNER_RECURSE			0x00000100L
#define SI_NO_ACL_PROTECT			0x00000200L
#define SI_NO_TREE_APPLY			0x00000400L
#define SI_PAGE_TITLE				0x00000800L
#define SI_SERVER_IS_DC				0x00001000L
#define SI_RESET_DACL_TREE			0x00004000L
#define SI_RESET_SACL_TREE			0x00008000L
#define SI_OBJECT_GUID				0x00010000L
#define SI_EDIT_EFFECTIVE			0x00020000L
#define SI_RESET_DACL				0x00040000L
#define SI_RESET_SACL				0x00080000L
#define SI_RESET_OWNER				0x00100000L
#define SI_NO_ADDITIONAL_PERMISSION	0x00200000L
#define SI_MAY_WRITE				0x10000000L

#define SI_EDIT_ALL     (SI_EDIT_PERMS | SI_EDIT_OWNER | SI_EDIT_AUDITS)


typedef struct _SI_ACCESS
{
	const GUID* pguid;
	ACCESS_MASK mask;
	LPCWSTR pszName;
	DWORD dwFlags;
} SI_ACCESS, *PSI_ACCESS;

/* values for SI_ACCESS.dwFlags */
#define SI_ACCESS_SPECIFIC			0x00010000L
#define SI_ACCESS_GENERAL			0x00020000L
#define SI_ACCESS_CONTAINER			0x00040000L
#define SI_ACCESS_PROPERTY			0x00080000L


typedef struct _SI_INHERIT_TYPE
{
	const GUID* pguid;
	ULONG dwFlags;
	LPCWSTR pszName;
} SI_INHERIT_TYPE, *PSI_INHERIT_TYPE;

/* values for SI_INHERIT_TYPE.dwFlags
   INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE
   defined elsewhere */


typedef enum _SI_PAGE_TYPE
{
	SI_PAGE_PERM = 0, 
	SI_PAGE_ADVPERM, 
	SI_PAGE_AUDIT, 
	SI_PAGE_OWNER
} SI_PAGE_TYPE;


#define PSPCB_SI_INITDIALOG	(WM_USER + 1)

#ifndef __ISecurityInformation_INTERFACE_DEFINED__
#define __ISecurityInformation_INTERFACE_DEFINED__
#undef INTERFACE
#define INTERFACE ISecurityInformation
DECLARE_INTERFACE_(ISecurityInformation, IUnknown)
{
		STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
		STDMETHOD_(ULONG,AddRef)(THIS) PURE;
		STDMETHOD_(ULONG,Release)(THIS) PURE;
		
		STDMETHOD(GetObjectInformation)(THIS_ PSI_OBJECT_INFO) PURE;
		STDMETHOD(GetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR*,BOOL) PURE;
		STDMETHOD(SetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR) PURE;
		STDMETHOD(GetAccessRights)(THIS_ const GUID*,DWORD,PSI_ACCESS*,ULONG*,ULONG*) PURE;
		STDMETHOD(MapGeneric)(THIS_ const GUID*,UCHAR*,ACCESS_MASK*) PURE;
		STDMETHOD(GetInheritTypes)(THIS_ PSI_INHERIT_TYPE*,ULONG*) PURE;
		STDMETHOD(PropertySheetPageCallback)(THIS_ HWND,UINT,SI_PAGE_TYPE) PURE;
};
typedef ISecurityInformation *LPSECURITYINFO;
#endif

/*
 * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo
 */

extern DECLSPEC_IMPORT const IID IID_ISecurityInformation;


HPROPSHEETPAGE ACLUIAPI CreateSecurityPage(LPSECURITYINFO psi);
BOOL ACLUIAPI EditSecurity(HWND hwndOwner, LPSECURITYINFO psi);

#ifdef __cplusplus
}
#endif

#endif