File: aclui.d

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (121 lines) | stat: -rw-r--r-- 3,858 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/**
 * 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 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);
}