add all ACEs to their principals
[reactos.git] / reactos / lib / aclui / precomp.h
1 #include <windows.h>
2 #include <commctrl.h>
3 #include <oleauto.h>
4 #include <objsel.h>
5 #include <prsht.h>
6 #include <aclui.h>
7 #include <sddl.h>
8 #include <ntsecapi.h>
9 #if SUPPORT_UXTHEME
10 #include <uxtheme.h>
11 #include <tmschema.h>
12 #endif
13 #include "resource.h"
14
15 ULONG DbgPrint(PCH Format,...);
16 #define DPRINT DbgPrint
17
18 #ifndef NT_SUCCESS
19 #define NT_SUCCESS(status) ((LONG)(status) >= 0)
20 #endif
21
22 #define EnableRedrawWindow(hwnd) \
23 SendMessage((hwnd), WM_SETREDRAW, TRUE, 0)
24
25 #define DisableRedrawWindow(hwnd) \
26 SendMessage((hwnd), WM_SETREDRAW, FALSE, 0)
27
28 extern HINSTANCE hDllInstance;
29
30 typedef struct _ACE_ENTRY
31 {
32 struct _ACE_ENTRY *Next;
33 } ACE_ENTRY, *PACE_ENTRY;
34
35 typedef struct _PRINCIPAL_LISTITEM
36 {
37 struct _PRINCIPAL_LISTITEM *Next;
38 PACE_ENTRY ACEs;
39 SID_NAME_USE SidNameUse;
40 WCHAR *DisplayString;
41 WCHAR *AccountName;
42 WCHAR *DomainName;
43 } PRINCIPAL_LISTITEM, *PPRINCIPAL_LISTITEM;
44
45 typedef struct _SECURITY_PAGE
46 {
47 HWND hWnd;
48 HWND hBtnAdd;
49 HWND hBtnRemove;
50 HWND hBtnAdvanced;
51 HWND hAceCheckList;
52 HWND hPermissionsForLabel;
53
54 /* Main Principals List */
55 HWND hWndPrincipalsList;
56 PPRINCIPAL_LISTITEM PrincipalsListHead;
57
58 INT ControlsMargin;
59
60 INT SpecialPermCheckIndex;
61
62 HIMAGELIST hiPrincipals;
63
64 LPSECURITYINFO psi;
65 SI_OBJECT_INFO ObjectInfo;
66 IDsObjectPicker *pDsObjectPicker;
67
68 SI_ACCESS DefaultAccess;
69
70 LPWSTR ServerName;
71 } SECURITY_PAGE, *PSECURITY_PAGE;
72
73 /* MISC ***********************************************************************/
74
75 BOOL
76 OpenLSAPolicyHandle(IN LPWSTR SystemName,
77 IN ACCESS_MASK DesiredAccess,
78 OUT PLSA_HANDLE PolicyHandle);
79
80 DWORD
81 LoadAndFormatString(IN HINSTANCE hInstance,
82 IN UINT uID,
83 OUT LPWSTR *lpTarget,
84 ...);
85
86 LPARAM
87 ListViewGetSelectedItemData(IN HWND hwnd);
88
89 BOOL
90 ListViewSelectItem(IN HWND hwnd,
91 IN INT Index);
92
93 HRESULT
94 InitializeObjectPicker(IN PCWSTR ServerName,
95 IN PSI_OBJECT_INFO ObjectInfo,
96 OUT IDsObjectPicker **pDsObjectPicker);
97
98 VOID
99 FreeObjectPicker(IN IDsObjectPicker *pDsObjectPicker);
100
101 typedef BOOL (*POBJPICK_SELECTED_SID)(IN IDsObjectPicker *pDsObjectPicker,
102 IN HWND hwndParent OPTIONAL,
103 IN PSID pSid,
104 IN PVOID Context OPTIONAL);
105
106 HRESULT
107 InvokeObjectPickerDialog(IN IDsObjectPicker *pDsObjectPicker,
108 IN HWND hwndParent OPTIONAL,
109 IN POBJPICK_SELECTED_SID SelectedSidCallback,
110 IN PVOID Context OPTIONAL);
111
112 /* CHECKLIST CONTROL **********************************************************/
113
114 #define CIS_DENYDISABLED (0x8)
115 #define CIS_DENYENABLED (0x0)
116 #define CIS_ALLOWDISABLED (0x4)
117 #define CIS_ALLOWENABLED (0x0)
118 #define CIS_ALLOW (0x2)
119 #define CIS_DENY (0x1)
120 #define CIS_NONE (0x0)
121 #define CIS_DISABLED (CIS_ALLOWDISABLED | CIS_DENYDISABLED)
122
123 #define CLB_ALLOW (0x1)
124 #define CLB_DENY (0x0)
125
126 #define CIS_MASK (CIS_DISABLED | CIS_ALLOW | CIS_DENY)
127
128 #define CLM_ADDITEM (WM_USER + 1)
129 #define CLM_DELITEM (WM_USER + 2)
130 #define CLM_GETITEMCOUNT (WM_USER + 3)
131 #define CLM_CLEAR (WM_USER + 4)
132 #define CLM_SETCHECKBOXCOLUMN (WM_USER + 5)
133 #define CLM_GETCHECKBOXCOLUMN (WM_USER + 6)
134 #define CLM_CLEARCHECKBOXES (WM_USER + 7)
135 #define CLM_SETITEMSTATE (WM_USER + 8)
136 #define CLM_ENABLEQUICKSEARCH (WM_USER + 9)
137 #define CLM_SETQUICKSEARCH_TIMEOUT_RESET (WM_USER + 10)
138 #define CLM_SETQUICKSEARCH_TIMEOUT_SETFOCUS (WM_USER + 11)
139 #define CLM_FINDITEMBYACCESSMASK (WM_USER + 12)
140
141 #define CLN_CHANGINGITEMCHECKBOX (101)
142
143 typedef struct _NMCHANGEITEMCHECKBOX
144 {
145 NMHDR nmhdr;
146 DWORD OldState;
147 DWORD NewState;
148 DWORD CheckBox;
149 BOOL Checked;
150 } NMCHANGEITEMCHECKBOX, *PNMCHANGEITEMCHECKBOX;
151
152 BOOL
153 RegisterCheckListControl(HINSTANCE hInstance);
154
155 VOID
156 UnregisterCheckListControl(VOID);
157
158 /* DLLMAIN ********************************************************************/
159
160 BOOL
161 WINAPI
162 DllMain(IN HINSTANCE hinstDLL,
163 IN DWORD dwReason,
164 IN LPVOID lpvReserved);
165
166 /* EOF */