summaryrefslogtreecommitdiff
path: root/libphobos/libdruntime/core/sys/windows/aclapi.d
blob: 4905351b565c328fec4fa2ae3b1460d57606d41f (plain)
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/**
 * Windows API header module
 *
 * Translated from MinGW Windows headers
 *
 * Authors: Stewart Gordon
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
 * Source: $(DRUNTIMESRC core/sys/windows/_aclapi.d)
 */
module core.sys.windows.aclapi;
version (Windows):

version (ANSI) {} else version = Unicode;
pragma(lib, "advapi32");

import core.sys.windows.accctrl, core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt;

extern (Windows) {
    VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD,
      ACCESS_MODE, DWORD);
    VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD,
      ACCESS_MODE, DWORD);
    DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG,
      PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR,
      PULONG, PSECURITY_DESCRIPTOR*);
    DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG,
      PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR,
      PULONG, PSECURITY_DESCRIPTOR*);
    VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR);
    VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR);
    VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A,
      SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR);
    VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W,
      SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR);
    VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID,
      GUID*, GUID*, PSID);
    VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID,
      GUID*, GUID*, PSID);
    VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID);
    VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID);
    DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK,
      PACCESS_MASK);
    DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK,
      PACCESS_MASK);
    DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK);
    DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK);
    DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*);
    DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*);
    static if (_WIN32_WINNT >= 0x501) {
        DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE,
          SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*,
          PGENERIC_MAPPING, PINHERITED_FROMA);
        DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE,
          SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*,
          PGENERIC_MAPPING, PINHERITED_FROMW);
    }
    DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
      PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
    DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
      PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
    DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION,
      PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
    TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A);
    TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W);
    LPSTR GetTrusteeNameA(PTRUSTEE_A);
    LPWSTR GetTrusteeNameW(PTRUSTEE_W);
    TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A);
    TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W);
    DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG,
      PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*,
      PSECURITY_DESCRIPTOR);
    DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG,
      PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*,
      PSECURITY_DESCRIPTOR);
    DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*);
    DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*);
    DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
      PSID, PSID, PACL, PACL);
    DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
      PSID, PSID, PACL, PACL);
    DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID,
      PSID, PACL, PACL);
    VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR,
      PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD);
    VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR,
      PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD);
    VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A);
    VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W);
    PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A);
    PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W);
    MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A);
    MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W);
}

version (Unicode) {
    alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName;
    alias BuildSecurityDescriptorW BuildSecurityDescriptor;
    alias BuildTrusteeWithNameW BuildTrusteeWithName;
    alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName;
    alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid;
    alias BuildTrusteeWithSidW BuildTrusteeWithSid;
    alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl;
    alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl;
    alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl;
    alias GetNamedSecurityInfoW GetNamedSecurityInfo;
    alias GetTrusteeFormW GetTrusteeForm;
    alias GetTrusteeNameW GetTrusteeName;
    alias GetTrusteeTypeW GetTrusteeType;
    alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts;
    alias SetEntriesInAclW SetEntriesInAcl;
    alias SetNamedSecurityInfoW SetNamedSecurityInfo;
    alias BuildImpersonateExplicitAccessWithNameW
      BuildImpersonateExplicitAccessWithName;
    alias BuildImpersonateTrusteeW BuildImpersonateTrustee;
    alias GetMultipleTrusteeW GetMultipleTrustee;
    alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation;
} else {
    alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName;
    alias BuildSecurityDescriptorA BuildSecurityDescriptor;
    alias BuildTrusteeWithNameA BuildTrusteeWithName;
    alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName;
    alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid;
    alias BuildTrusteeWithSidA BuildTrusteeWithSid;
    alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl;
    alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl;
    alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl;
    alias GetNamedSecurityInfoA GetNamedSecurityInfo;
    alias GetTrusteeFormA GetTrusteeForm;
    alias GetTrusteeNameA GetTrusteeName;
    alias GetTrusteeTypeA GetTrusteeType;
    alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts;
    alias SetEntriesInAclA SetEntriesInAcl;
    alias SetNamedSecurityInfoA SetNamedSecurityInfo;
    alias BuildImpersonateExplicitAccessWithNameA
      BuildImpersonateExplicitAccessWithName;
    alias BuildImpersonateTrusteeA BuildImpersonateTrustee;
    alias GetMultipleTrusteeA GetMultipleTrustee;
    alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation;
}