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