| 1 |
#ifndef _ACLUI_H |
| 2 |
#define _ACLUI_H |
| 3 |
#if __GNUC__ >= 3 |
| 4 |
#pragma GCC system_header |
| 5 |
#endif |
| 6 |
|
| 7 |
#ifndef _OBJC_NO_COM |
| 8 |
#include <objbase.h> |
| 9 |
#include <commctrl.h> |
| 10 |
#include <accctrl.h> |
| 11 |
#endif |
| 12 |
|
| 13 |
#if !defined(_ACLUI_) |
| 14 |
#define ACLUIAPI DECLSPEC_IMPORT WINAPI |
| 15 |
#else |
| 16 |
#define ACLUIAPI WINAPI |
| 17 |
#endif |
| 18 |
|
| 19 |
#ifdef __cplusplus |
| 20 |
extern "C" { |
| 21 |
#endif |
| 22 |
|
| 23 |
typedef struct _SI_OBJECT_INFO |
| 24 |
{ |
| 25 |
DWORD dwFlags; |
| 26 |
HINSTANCE hInstance; |
| 27 |
LPWSTR pszServerName; |
| 28 |
LPWSTR pszObjectName; |
| 29 |
LPWSTR pszPageTitle; |
| 30 |
GUID guidObjectType; |
| 31 |
} SI_OBJECT_INFO, *PSI_OBJECT_INFO; |
| 32 |
|
| 33 |
/* values for SI_OBJECT_INFO.dwFlags */ |
| 34 |
#define SI_EDIT_PERMS 0x00000000L |
| 35 |
#define SI_EDIT_OWNER 0x00000001L |
| 36 |
#define SI_EDIT_AUDITS 0x00000002L |
| 37 |
#define SI_CONTAINER 0x00000004L |
| 38 |
#define SI_READONLY 0x00000008L |
| 39 |
#define SI_ADVANCED 0x00000010L |
| 40 |
#define SI_RESET 0x00000020L |
| 41 |
#define SI_OWNER_READONLY 0x00000040L |
| 42 |
#define SI_EDIT_PROPERTIES 0x00000080L |
| 43 |
#define SI_OWNER_RECURSE 0x00000100L |
| 44 |
#define SI_NO_ACL_PROTECT 0x00000200L |
| 45 |
#define SI_NO_TREE_APPLY 0x00000400L |
| 46 |
#define SI_PAGE_TITLE 0x00000800L |
| 47 |
#define SI_SERVER_IS_DC 0x00001000L |
| 48 |
#define SI_RESET_DACL_TREE 0x00004000L |
| 49 |
#define SI_RESET_SACL_TREE 0x00008000L |
| 50 |
#define SI_OBJECT_GUID 0x00010000L |
| 51 |
#define SI_EDIT_EFFECTIVE 0x00020000L |
| 52 |
#define SI_RESET_DACL 0x00040000L |
| 53 |
#define SI_RESET_SACL 0x00080000L |
| 54 |
#define SI_RESET_OWNER 0x00100000L |
| 55 |
#define SI_NO_ADDITIONAL_PERMISSION 0x00200000L |
| 56 |
#define SI_MAY_WRITE 0x10000000L |
| 57 |
|
| 58 |
#define SI_EDIT_ALL (SI_EDIT_PERMS | SI_EDIT_OWNER | SI_EDIT_AUDITS) |
| 59 |
|
| 60 |
|
| 61 |
typedef struct _SI_ACCESS |
| 62 |
{ |
| 63 |
const GUID* pguid; |
| 64 |
ACCESS_MASK mask; |
| 65 |
LPCWSTR pszName; |
| 66 |
DWORD dwFlags; |
| 67 |
} SI_ACCESS, *PSI_ACCESS; |
| 68 |
|
| 69 |
/* values for SI_ACCESS.dwFlags */ |
| 70 |
#define SI_ACCESS_SPECIFIC 0x00010000L |
| 71 |
#define SI_ACCESS_GENERAL 0x00020000L |
| 72 |
#define SI_ACCESS_CONTAINER 0x00040000L |
| 73 |
#define SI_ACCESS_PROPERTY 0x00080000L |
| 74 |
|
| 75 |
|
| 76 |
typedef struct _SI_INHERIT_TYPE |
| 77 |
{ |
| 78 |
const GUID* pguid; |
| 79 |
ULONG dwFlags; |
| 80 |
LPCWSTR pszName; |
| 81 |
} SI_INHERIT_TYPE, *PSI_INHERIT_TYPE; |
| 82 |
|
| 83 |
/* values for SI_INHERIT_TYPE.dwFlags |
| 84 |
INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE |
| 85 |
defined elsewhere */ |
| 86 |
|
| 87 |
|
| 88 |
typedef enum _SI_PAGE_TYPE |
| 89 |
{ |
| 90 |
SI_PAGE_PERM = 0, |
| 91 |
SI_PAGE_ADVPERM, |
| 92 |
SI_PAGE_AUDIT, |
| 93 |
SI_PAGE_OWNER |
| 94 |
} SI_PAGE_TYPE; |
| 95 |
|
| 96 |
|
| 97 |
#define PSPCB_SI_INITDIALOG (WM_USER + 1) |
| 98 |
|
| 99 |
#ifndef __ISecurityInformation_INTERFACE_DEFINED__ |
| 100 |
#define __ISecurityInformation_INTERFACE_DEFINED__ |
| 101 |
#define INTERFACE ISecurityInformation |
| 102 |
DECLARE_INTERFACE_(ISecurityInformation, IUnknown) |
| 103 |
{ |
| 104 |
STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; |
| 105 |
STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 106 |
STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 107 |
|
| 108 |
STDMETHOD(GetObjectInformation)(THIS_ PSI_OBJECT_INFO) PURE; |
| 109 |
STDMETHOD(GetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR*,BOOL) PURE; |
| 110 |
STDMETHOD(SetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR) PURE; |
| 111 |
STDMETHOD(GetAccessRights)(THIS_ const GUID*,DWORD,PSI_ACCESS*,ULONG*,ULONG*) PURE; |
| 112 |
STDMETHOD(MapGeneric)(THIS_ const GUID*,UCHAR*,ACCESS_MASK*) PURE; |
| 113 |
STDMETHOD(GetInheritTypes)(THIS_ PSI_INHERIT_TYPE*,ULONG*) PURE; |
| 114 |
STDMETHOD(PropertySheetPageCallback)(THIS_ HWND,UINT,SI_PAGE_TYPE) PURE; |
| 115 |
}; |
| 116 |
#undef INTERFACE |
| 117 |
typedef ISecurityInformation *LPSECURITYINFO; |
| 118 |
#endif |
| 119 |
|
| 120 |
/* |
| 121 |
* TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo |
| 122 |
*/ |
| 123 |
|
| 124 |
extern DECLSPEC_IMPORT const IID IID_ISecurityInformation; |
| 125 |
|
| 126 |
|
| 127 |
HPROPSHEETPAGE ACLUIAPI CreateSecurityPage(LPSECURITYINFO psi); |
| 128 |
BOOL ACLUIAPI EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); |
| 129 |
|
| 130 |
#ifdef __cplusplus |
| 131 |
} |
| 132 |
#endif |
| 133 |
|
| 134 |
#endif |