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