Merge pull request #297 from t-b/upgrade_msys_openssl_101m
[msysgit.git] / include / accctrl.h
blob3db42795b89e807c28a4314990c3ba5f19c1201e
1 #ifndef _ACCCRTL_H
2 #define _ACCCRTL_H
3 #include <wtypes.h>
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
9 #define AccFree LocalFree
10 #define ACTRL_RESERVED 0x00000000
11 #define ACTRL_ACCESS_PROTECTED 0x00000001
12 #define ACTRL_ACCESS_ALLOWED 0x00000001
13 #define ACTRL_ACCESS_DENIED 0x00000002
14 #define ACTRL_AUDIT_SUCCESS 0x00000004
15 #define ACTRL_AUDIT_FAILURE 0x00000008
16 #define ACTRL_SYSTEM_ACCESS 0x04000000
17 #define ACTRL_DELETE 0x08000000
18 #define ACTRL_READ_CONTROL 0x10000000
19 #define ACTRL_CHANGE_ACCESS 0x20000000
20 #define ACTRL_CHANGE_OWNER 0x40000000
21 #define ACTRL_SYNCHRONIZE 0x80000000
22 #define ACTRL_STD_RIGHTS_ALL 0xf8000000
24 #define ACTRL_FILE_READ 0x00000001
25 #define ACTRL_FILE_WRITE 0x00000002
26 #define ACTRL_FILE_APPEND 0x00000004
27 #define ACTRL_FILE_READ_PROP 0x00000008
28 #define ACTRL_FILE_WRITE_PROP 0x00000010
29 #define ACTRL_FILE_EXECUTE 0x00000020
30 #define ACTRL_FILE_READ_ATTRIB 0x00000080
31 #define ACTRL_FILE_WRITE_ATTRIB 0x00000100
32 #define ACTRL_FILE_CREATE_PIPE 0x00000200
33 #define ACTRL_DIR_LIST 0x00000001
34 #define ACTRL_DIR_CREATE_OBJECT 0x00000002
35 #define ACTRL_DIR_CREATE_CHILD 0x00000004
36 #define ACTRL_DIR_DELETE_CHILD 0x00000040
37 #define ACTRL_DIR_TRAVERSE 0x00000020
38 #define ACTRL_KERNEL_TERMINATE 0x00000001
39 #define ACTRL_KERNEL_THREAD 0x00000002
40 #define ACTRL_KERNEL_VM 0x00000004
41 #define ACTRL_KERNEL_VM_READ 0x00000008
42 #define ACTRL_KERNEL_VM_WRITE 0x00000010
43 #define ACTRL_KERNEL_DUP_HANDLE 0x00000020
44 #define ACTRL_KERNEL_PROCESS 0x00000040
45 #define ACTRL_KERNEL_SET_INFO 0x00000080
46 #define ACTRL_KERNEL_GET_INFO 0x00000100
47 #define ACTRL_KERNEL_CONTROL 0x00000200
48 #define ACTRL_KERNEL_ALERT 0x00000400
49 #define ACTRL_KERNEL_GET_CONTEXT 0x00000800
50 #define ACTRL_KERNEL_SET_CONTEXT 0x00001000
51 #define ACTRL_KERNEL_TOKEN 0x00002000
52 #define ACTRL_KERNEL_IMPERSONATE 0x00004000
53 #define ACTRL_KERNEL_DIMPERSONATE 0x00008000
54 #define ACTRL_PRINT_SADMIN 0x00000001
55 #define ACTRL_PRINT_SLIST 0x00000002
56 #define ACTRL_PRINT_PADMIN 0x00000004
57 #define ACTRL_PRINT_PUSE 0x00000008
58 #define ACTRL_PRINT_JADMIN 0x00000010
59 #define ACTRL_SVC_GET_INFO 0x00000001
60 #define ACTRL_SVC_SET_INFO 0x00000002
61 #define ACTRL_SVC_STATUS 0x00000004
62 #define ACTRL_SVC_LIST 0x00000008
63 #define ACTRL_SVC_START 0x00000010
64 #define ACTRL_SVC_STOP 0x00000020
65 #define ACTRL_SVC_PAUSE 0x00000040
66 #define ACTRL_SVC_INTERROGATE 0x00000080
67 #define ACTRL_SVC_UCONTROL 0x00000100
68 #define ACTRL_REG_QUERY 0x00000001
69 #define ACTRL_REG_SET 0x00000002
70 #define ACTRL_REG_CREATE_CHILD 0x00000004
71 #define ACTRL_REG_LIST 0x00000008
72 #define ACTRL_REG_NOTIFY 0x00000010
73 #define ACTRL_REG_LINK 0x00000020
74 #define ACTRL_WIN_CLIPBRD 0x00000001
75 #define ACTRL_WIN_GLOBAL_ATOMS 0x00000002
76 #define ACTRL_WIN_CREATE 0x00000004
77 #define ACTRL_WIN_LIST_DESK 0x00000008
78 #define ACTRL_WIN_LIST 0x00000010
79 #define ACTRL_WIN_READ_ATTRIBS 0x00000020
80 #define ACTRL_WIN_WRITE_ATTRIBS 0x00000040
81 #define ACTRL_WIN_SCREEN 0x00000080
82 #define ACTRL_WIN_EXIT 0x00000100
83 #define ACTRL_ACCESS_NO_OPTIONS 0x00000000
84 #define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES 0x00000001
85 #define ACCCTRL_DEFAULT_PROVIDERA "Windows NT Access Provider"
86 #define ACCCTRL_DEFAULT_PROVIDERW L"Windows NT Access Provider"
87 #define TRUSTEE_ACCESS_ALLOWED 0x00000001L
88 #define TRUSTEE_ACCESS_READ 0x00000002L
89 #define TRUSTEE_ACCESS_WRITE 0x00000004L
90 #define TRUSTEE_ACCESS_EXPLICIT 0x00000001L
91 #define TRUSTEE_ACCESS_READ_WRITE (TRUSTEE_ACCESS_READ | TRUSTEE_ACCESS_WRITE)
92 #define TRUSTEE_ACCESS_ALL 0xFFFFFFFFL
93 #define NO_INHERITANCE 0x0
94 #define SUB_OBJECTS_ONLY_INHERIT 0x1
95 #define SUB_CONTAINERS_ONLY_INHERIT 0x2
96 #define SUB_CONTAINERS_AND_OBJECTS_INHERIT 0x3
97 #define INHERIT_NO_PROPAGATE 0x4
98 #define INHERIT_ONLY 0x8
99 #define INHERITED_ACCESS_ENTRY 0x10
100 #define INHERITED_PARENT 0x10000000
101 #define INHERITED_GRANDPARENT 0x20000000
103 typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
104 typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
106 typedef enum _ACCESS_MODE {
107 NOT_USED_ACCESS = 0,
108 GRANT_ACCESS,
109 SET_ACCESS,
110 DENY_ACCESS,
111 REVOKE_ACCESS,
112 SET_AUDIT_SUCCESS,
113 SET_AUDIT_FAILURE
114 } ACCESS_MODE;
115 typedef enum _SE_OBJECT_TYPE {
116 SE_UNKNOWN_OBJECT_TYPE = 0,
117 SE_FILE_OBJECT,
118 SE_SERVICE,
119 SE_PRINTER,
120 SE_REGISTRY_KEY,
121 SE_LMSHARE,
122 SE_KERNEL_OBJECT,
123 SE_WINDOW_OBJECT,
124 SE_DS_OBJECT,
125 SE_DS_OBJECT_ALL,
126 SE_PROVIDER_DEFINED_OBJECT,
127 SE_WMIGUID_OBJECT
128 } SE_OBJECT_TYPE;
129 typedef enum _TRUSTEE_TYPE {
130 TRUSTEE_IS_UNKNOWN,
131 TRUSTEE_IS_USER,
132 TRUSTEE_IS_GROUP,
133 TRUSTEE_IS_DOMAIN,
134 TRUSTEE_IS_ALIAS,
135 TRUSTEE_IS_WELL_KNOWN_GROUP,
136 TRUSTEE_IS_DELETED,
137 TRUSTEE_IS_INVALID,
138 TRUSTEE_IS_COMPUTER
139 } TRUSTEE_TYPE;
140 typedef enum _TRUSTEE_FORM {
141 TRUSTEE_IS_SID,
142 TRUSTEE_IS_NAME,
143 TRUSTEE_BAD_FORM,
144 TRUSTEE_IS_OBJECTS_AND_SID,
145 TRUSTEE_IS_OBJECTS_AND_NAME
146 } TRUSTEE_FORM;
147 typedef enum _MULTIPLE_TRUSTEE_OPERATION {
148 NO_MULTIPLE_TRUSTEE,
149 TRUSTEE_IS_IMPERSONATE
150 } MULTIPLE_TRUSTEE_OPERATION;
151 typedef struct _TRUSTEE_A {
152 struct _TRUSTEE_A *pMultipleTrustee;
153 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
154 TRUSTEE_FORM TrusteeForm;
155 TRUSTEE_TYPE TrusteeType;
156 LPSTR ptstrName;
157 } TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
158 typedef struct _TRUSTEE_W {
159 struct _TRUSTEE_W *pMultipleTrustee;
160 MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
161 TRUSTEE_FORM TrusteeForm;
162 TRUSTEE_TYPE TrusteeType;
163 LPWSTR ptstrName;
164 } TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
165 typedef struct _ACTRL_ACCESS_ENTRYA {
166 TRUSTEE_A Trustee;
167 ULONG fAccessFlags;
168 ACCESS_RIGHTS Access;
169 ACCESS_RIGHTS ProvSpecificAccess;
170 INHERIT_FLAGS Inheritance;
171 LPSTR lpInheritProperty;
172 } ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
173 typedef struct _ACTRL_ACCESS_ENTRYW {
174 TRUSTEE_W Trustee;
175 ULONG fAccessFlags;
176 ACCESS_RIGHTS Access;
177 ACCESS_RIGHTS ProvSpecificAccess;
178 INHERIT_FLAGS Inheritance;
179 LPWSTR lpInheritProperty;
180 } ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
181 typedef struct _ACTRL_ACCESS_ENTRY_LISTA {
182 ULONG cEntries;
183 ACTRL_ACCESS_ENTRYA *pAccessList;
184 } ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
185 typedef struct _ACTRL_ACCESS_ENTRY_LISTW {
186 ULONG cEntries;
187 ACTRL_ACCESS_ENTRYW *pAccessList;
188 } ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
189 typedef struct _ACTRL_PROPERTY_ENTRYA {
190 LPSTR lpProperty;
191 PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList;
192 ULONG fListFlags;
193 } ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
194 typedef struct _ACTRL_PROPERTY_ENTRYW {
195 LPWSTR lpProperty;
196 PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList;
197 ULONG fListFlags;
198 } ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
199 typedef struct _ACTRL_ALISTA {
200 ULONG cEntries;
201 PACTRL_PROPERTY_ENTRYA pPropertyAccessList;
202 } ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
203 typedef struct _ACTRL_ALISTW {
204 ULONG cEntries;
205 PACTRL_PROPERTY_ENTRYW pPropertyAccessList;
206 } ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
207 typedef struct _TRUSTEE_ACCESSA {
208 LPSTR lpProperty;
209 ACCESS_RIGHTS Access;
210 ULONG fAccessFlags;
211 ULONG fReturnedAccess;
212 } TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
213 typedef struct _TRUSTEE_ACCESSW {
214 LPWSTR lpProperty;
215 ACCESS_RIGHTS Access;
216 ULONG fAccessFlags;
217 ULONG fReturnedAccess;
218 } TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
219 typedef struct _ACTRL_OVERLAPPED {
220 _ANONYMOUS_UNION
221 union {
222 PVOID Provider;
223 ULONG Reserved1;
224 } DUMMYUNIONNAME;
225 ULONG Reserved2;
226 HANDLE hEvent;
227 } ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
228 typedef struct _ACTRL_ACCESS_INFOA {
229 ULONG fAccessPermission;
230 LPSTR lpAccessPermissionName;
231 } ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
232 typedef struct _ACTRL_ACCESS_INFOW {
233 ULONG fAccessPermission;
234 LPWSTR lpAccessPermissionName;
235 } ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
236 typedef struct _ACTRL_CONTROL_INFOA {
237 LPSTR lpControlId;
238 LPSTR lpControlName;
239 } ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
240 typedef struct _ACTRL_CONTROL_INFOW {
241 LPWSTR lpControlId;
242 LPWSTR lpControlName;
243 } ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
244 typedef struct _EXPLICIT_ACCESS_A {
245 DWORD grfAccessPermissions;
246 ACCESS_MODE grfAccessMode;
247 DWORD grfInheritance;
248 TRUSTEE_A Trustee;
249 } EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
250 typedef struct _EXPLICIT_ACCESS_W {
251 DWORD grfAccessPermissions;
252 ACCESS_MODE grfAccessMode;
253 DWORD grfInheritance;
254 TRUSTEE_W Trustee;
255 } EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
256 typedef struct _OBJECTS_AND_SID {
257 DWORD ObjectsPresent;
258 GUID ObjectTypeGuid;
259 GUID InheritedObjectTypeGuid;
260 SID * pSid;
261 } OBJECTS_AND_SID, *POBJECTS_AND_SID;
262 typedef struct _OBJECTS_AND_NAME_A {
263 DWORD ObjectsPresent;
264 SE_OBJECT_TYPE ObjectType;
265 LPSTR ObjectTypeName;
266 LPSTR InheritedObjectTypeName;
267 LPSTR ptstrName;
268 } OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
269 typedef struct _OBJECTS_AND_NAME_W {
270 DWORD ObjectsPresent;
271 SE_OBJECT_TYPE ObjectType;
272 LPWSTR ObjectTypeName;
273 LPWSTR InheritedObjectTypeName;
274 LPWSTR ptstrName;
275 } OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
278 #ifdef UNICODE
279 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
280 typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_;
281 typedef TRUSTEEW TRUSTEE, *PTRUSTEE;
282 typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS;
283 typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
284 typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
285 typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
286 typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT;
287 typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
288 typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
289 typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
290 typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
291 typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
292 #else
293 #define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
294 typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_;
295 typedef TRUSTEEA TRUSTEE, *PTRUSTEE;
296 typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS;
297 typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
298 typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
299 typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
300 typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT;
301 typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
302 typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
303 typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
304 typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
305 typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
306 #endif
308 #ifdef __cplusplus
310 #endif
312 #endif /* _ACCCRTL_H */