blob: 6ae37c6a686e6f0ca6916f77b2b58ca7f5a9de21 [file] [log] [blame]
/**
* Windows API header module
*
* Translated from MinGW API for MS-Windows 3.10
*
* Authors: Stewart Gordon
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(DRUNTIMESRC src/core/sys/windows/_aclui.d)
*/
module core.sys.windows.aclui;
version (Windows):
@system:
pragma(lib, "aclui");
import core.sys.windows.w32api;
/*
static assert (_WIN32_WINNT >= 0x500,
"core.sys.windows.aclui is available only if version Windows2000, WindowsXP, Windows2003 "
"or WindowsVista is set");
*/
import core.sys.windows.accctrl, core.sys.windows.commctrl, core.sys.windows.objbase;
import core.sys.windows.basetyps, core.sys.windows.prsht, core.sys.windows.unknwn, core.sys.windows.windef,
core.sys.windows.winuser;
struct SI_OBJECT_INFO {
DWORD dwFlags;
HINSTANCE hInstance;
LPWSTR pszServerName;
LPWSTR pszObjectName;
LPWSTR pszPageTitle;
GUID guidObjectType;
}
alias SI_OBJECT_INFO* PSI_OBJECT_INFO;
// values for SI_OBJECT_INFO.dwFlags
enum DWORD
SI_EDIT_PERMS = 0x00000000,
SI_EDIT_OWNER = 0x00000001,
SI_EDIT_AUDITS = 0x00000002,
SI_CONTAINER = 0x00000004,
SI_READONLY = 0x00000008,
SI_ADVANCED = 0x00000010,
SI_RESET = 0x00000020,
SI_OWNER_READONLY = 0x00000040,
SI_EDIT_PROPERTIES = 0x00000080,
SI_OWNER_RECURSE = 0x00000100,
SI_NO_ACL_PROTECT = 0x00000200,
SI_NO_TREE_APPLY = 0x00000400,
SI_PAGE_TITLE = 0x00000800,
SI_SERVER_IS_DC = 0x00001000,
SI_RESET_DACL_TREE = 0x00004000,
SI_RESET_SACL_TREE = 0x00008000,
SI_OBJECT_GUID = 0x00010000,
SI_EDIT_EFFECTIVE = 0x00020000,
SI_RESET_DACL = 0x00040000,
SI_RESET_SACL = 0x00080000,
SI_RESET_OWNER = 0x00100000,
SI_NO_ADDITIONAL_PERMISSION = 0x00200000,
SI_MAY_WRITE = 0x10000000,
SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER
| SI_EDIT_AUDITS;
struct SI_ACCESS {
const(GUID)* pguid;
ACCESS_MASK mask;
LPCWSTR pszName;
DWORD dwFlags;
}
alias SI_ACCESS* PSI_ACCESS;
// values for SI_ACCESS.dwFlags
enum DWORD
SI_ACCESS_SPECIFIC = 0x00010000,
SI_ACCESS_GENERAL = 0x00020000,
SI_ACCESS_CONTAINER = 0x00040000,
SI_ACCESS_PROPERTY = 0x00080000;
struct SI_INHERIT_TYPE {
const(GUID)* pguid;
ULONG dwFlags;
LPCWSTR pszName;
}
alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE;
/* values for SI_INHERIT_TYPE.dwFlags
INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE
defined elsewhere */
enum SI_PAGE_TYPE {
SI_PAGE_PERM,
SI_PAGE_ADVPERM,
SI_PAGE_AUDIT,
SI_PAGE_OWNER
}
enum uint PSPCB_SI_INITDIALOG = WM_USER + 1;
interface ISecurityInformation : IUnknown {
HRESULT GetObjectInformation(PSI_OBJECT_INFO);
HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL);
HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR);
HRESULT GetAccessRights(const(GUID)*, DWORD, PSI_ACCESS*, ULONG*, ULONG*);
HRESULT MapGeneric(const(GUID)*, UCHAR*, ACCESS_MASK*);
HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*);
HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE);
}
alias ISecurityInformation LPSECURITYINFO;
/* Comment from MinGW
* TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo
*/
// FIXME: linkage attribute?
extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation;
extern (Windows) {
HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi);
BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi);
}