* Slap *some* sense into our header inclusions.
[reactos.git] / reactos / dll / win32 / aclui / precomp.h
1 #define _ACLUI_
2
3 #define WIN32_NO_STATUS
4 #define _INC_WINDOWS
5 #define COM_NO_WINDOWS_H
6 #include <stdarg.h>
7 #include <windef.h>
8 #include <winbase.h>
9 #include <wingdi.h>
10 #include <ole2.h>
11
12 #define NTOS_MODE_USER
13 #include <ndk/rtlfuncs.h>
14
15 #include <objsel.h>
16 #include <aclui.h>
17 #include <sddl.h>
18 #include <ntsecapi.h>
19 #ifdef SUPPORT_UXTHEME
20 #include <uxtheme.h>
21 #include <tmschema.h>
22 #endif
23
24 #include "resource.h"
25
26 #define EnableRedrawWindow(hwnd) \
27 SendMessage((hwnd), WM_SETREDRAW, TRUE, 0)
28
29 #define DisableRedrawWindow(hwnd) \
30 SendMessage((hwnd), WM_SETREDRAW, FALSE, 0)
31
32 extern HINSTANCE hDllInstance;
33
34 typedef struct _ACE_ENTRY
35 {
36 struct _ACE_ENTRY *Next;
37 } ACE_ENTRY, *PACE_ENTRY;
38
39 typedef struct _PRINCIPAL_LISTITEM
40 {
41 struct _PRINCIPAL_LISTITEM *Next;
42 struct _SIDREQRESULT *SidReqResult;
43 PACE_ENTRY ACEs;
44 LPWSTR DisplayString;
45 } PRINCIPAL_LISTITEM, *PPRINCIPAL_LISTITEM;
46
47 typedef struct _SECURITY_PAGE
48 {
49 HWND hWnd;
50 HWND hBtnAdd;
51 HWND hBtnRemove;
52 HWND hBtnAdvanced;
53 HWND hAceCheckList;
54 HWND hPermissionsForLabel;
55
56 /* Main Principals List */
57 HWND hWndPrincipalsList;
58 PPRINCIPAL_LISTITEM PrincipalsListHead;
59
60 PSID OwnerSid;
61 BOOL OwnerDefaulted;
62
63 INT ControlsMargin;
64
65 INT SpecialPermCheckIndex;
66
67 HIMAGELIST hiPrincipals;
68
69 LPSECURITYINFO psi;
70 SI_OBJECT_INFO ObjectInfo;
71 IDsObjectPicker *pDsObjectPicker;
72
73 SI_ACCESS DefaultAccess;
74
75 HANDLE SidCacheMgr;
76 LONG SidLookupsPending;
77 UINT Initializing : 1;
78
79 LPCWSTR ServerName;
80 } SECURITY_PAGE, *PSECURITY_PAGE;
81
82 /* MISC ***********************************************************************/
83
84 DWORD
85 LoadAndFormatString(IN HINSTANCE hInstance,
86 IN UINT uID,
87 OUT LPWSTR *lpTarget,
88 ...);
89
90 LPARAM
91 ListViewGetSelectedItemData(IN HWND hwnd);
92
93 BOOL
94 ListViewSelectItem(IN HWND hwnd,
95 IN INT Index);
96
97 HRESULT
98 InitializeObjectPicker(IN PCWSTR ServerName,
99 IN PSI_OBJECT_INFO ObjectInfo,
100 OUT IDsObjectPicker **pDsObjectPicker);
101
102 VOID
103 FreeObjectPicker(IN IDsObjectPicker *pDsObjectPicker);
104
105 typedef BOOL (*POBJPICK_SELECTED_SID)(IN IDsObjectPicker *pDsObjectPicker,
106 IN HWND hwndParent OPTIONAL,
107 IN PSID pSid,
108 IN PVOID Context OPTIONAL);
109
110 HRESULT
111 InvokeObjectPickerDialog(IN IDsObjectPicker *pDsObjectPicker,
112 IN HWND hwndParent OPTIONAL,
113 IN POBJPICK_SELECTED_SID SelectedSidCallback,
114 IN PVOID Context OPTIONAL);
115
116 /* CHECKLIST CONTROL **********************************************************/
117
118 #define CIS_DENYDISABLED (0x8)
119 #define CIS_DENYENABLED (0x0)
120 #define CIS_ALLOWDISABLED (0x4)
121 #define CIS_ALLOWENABLED (0x0)
122 #define CIS_ALLOW (0x2)
123 #define CIS_DENY (0x1)
124 #define CIS_NONE (0x0)
125 #define CIS_DISABLED (CIS_ALLOWDISABLED | CIS_DENYDISABLED)
126
127 #define CLB_ALLOW (0x1)
128 #define CLB_DENY (0x0)
129
130 #define CIS_MASK (CIS_DISABLED | CIS_ALLOW | CIS_DENY)
131
132 #define CLM_ADDITEM (WM_USER + 1)
133 #define CLM_DELITEM (WM_USER + 2)
134 #define CLM_GETITEMCOUNT (WM_USER + 3)
135 #define CLM_CLEAR (WM_USER + 4)
136 #define CLM_SETCHECKBOXCOLUMN (WM_USER + 5)
137 #define CLM_GETCHECKBOXCOLUMN (WM_USER + 6)
138 #define CLM_CLEARCHECKBOXES (WM_USER + 7)
139 #define CLM_SETITEMSTATE (WM_USER + 8)
140 #define CLM_ENABLEQUICKSEARCH (WM_USER + 9)
141 #define CLM_SETQUICKSEARCH_TIMEOUT_RESET (WM_USER + 10)
142 #define CLM_SETQUICKSEARCH_TIMEOUT_SETFOCUS (WM_USER + 11)
143 #define CLM_FINDITEMBYACCESSMASK (WM_USER + 12)
144
145 #define CLN_CHANGINGITEMCHECKBOX (101)
146
147 typedef struct _NMCHANGEITEMCHECKBOX
148 {
149 NMHDR nmhdr;
150 DWORD OldState;
151 DWORD NewState;
152 DWORD CheckBox;
153 BOOL Checked;
154 } NMCHANGEITEMCHECKBOX, *PNMCHANGEITEMCHECKBOX;
155
156 BOOL
157 RegisterCheckListControl(HINSTANCE hInstance);
158
159 VOID
160 UnregisterCheckListControl(HINSTANCE hInstance);
161
162 /* DLLMAIN ********************************************************************/
163
164 BOOL
165 WINAPI
166 DllMain(IN HINSTANCE hinstDLL,
167 IN DWORD dwReason,
168 IN LPVOID lpvReserved);
169
170 /* SIDCACHE *******************************************************************/
171
172 typedef struct _SIDREQRESULT
173 {
174 LONG RefCount;
175 SID_NAME_USE SidNameUse;
176 LPWSTR AccountName;
177 LPWSTR DomainName;
178 } SIDREQRESULT, *PSIDREQRESULT;
179
180 typedef VOID (*PSIDREQCOMPLETIONPROC)(IN HANDLE SidCacheMgr,
181 IN PSID Sid,
182 IN PSIDREQRESULT SidRequestResult,
183 IN PVOID Context);
184
185 HANDLE
186 CreateSidCacheMgr(IN HANDLE Heap,
187 IN LPCWSTR SystemName);
188
189 VOID
190 DestroySidCacheMgr(IN HANDLE SidCacheMgr);
191
192 VOID
193 DequeueSidLookup(IN HANDLE SidCacheMgr,
194 IN PSID pSid);
195
196 BOOL
197 LookupSidCache(IN HANDLE SidCacheMgr,
198 IN PSID pSid,
199 IN PSIDREQCOMPLETIONPROC CompletionProc,
200 IN PVOID Context);
201
202 VOID
203 ReferenceSidReqResult(IN HANDLE SidCacheMgr,
204 IN PSIDREQRESULT ReqResult);
205
206 VOID
207 DereferenceSidReqResult(IN HANDLE SidCacheMgr,
208 IN PSIDREQRESULT ReqResult);
209
210 /* EOF */