xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/aclapi.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * Authors: Stewart Gordon
7  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8  * Source: $(DRUNTIMESRC core/sys/windows/_aclapi.d)
9  */
10 module core.sys.windows.aclapi;
version(Windows)11 version (Windows):
12 @system:
13 
14 version (ANSI) {} else version = Unicode;
15 pragma(lib, "advapi32");
16 
17 import core.sys.windows.accctrl, core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt;
18 
19 extern (Windows) {
20     VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD,
21       ACCESS_MODE, DWORD);
22     VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD,
23       ACCESS_MODE, DWORD);
24     DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG,
25       PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR,
26       PULONG, PSECURITY_DESCRIPTOR*);
27     DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG,
28       PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR,
29       PULONG, PSECURITY_DESCRIPTOR*);
30     VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR);
31     VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR);
32     VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A,
33       SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR);
34     VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W,
35       SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR);
36     VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID,
37       GUID*, GUID*, PSID);
38     VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID,
39       GUID*, GUID*, PSID);
40     VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID);
41     VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID);
42     DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK,
43       PACCESS_MASK);
44     DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK,
45       PACCESS_MASK);
46     DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK);
47     DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK);
48     DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*);
49     DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*);
50     static if (_WIN32_WINNT >= 0x501) {
51         DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE,
52           SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*,
53           PGENERIC_MAPPING, PINHERITED_FROMA);
54         DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE,
55           SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*,
56           PGENERIC_MAPPING, PINHERITED_FROMW);
57     }
58     DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
59       PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
60     DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
61       PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
62     DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION,
63       PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*);
64     TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A);
65     TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W);
66     LPSTR GetTrusteeNameA(PTRUSTEE_A);
67     LPWSTR GetTrusteeNameW(PTRUSTEE_W);
68     TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A);
69     TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W);
70     DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG,
71       PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*,
72       PSECURITY_DESCRIPTOR);
73     DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG,
74       PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*,
75       PSECURITY_DESCRIPTOR);
76     DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*);
77     DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*);
78     DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
79       PSID, PSID, PACL, PACL);
80     DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION,
81       PSID, PSID, PACL, PACL);
82     DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID,
83       PSID, PACL, PACL);
84     VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR,
85       PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD);
86     VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR,
87       PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD);
88     VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A);
89     VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W);
90     PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A);
91     PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W);
92     MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A);
93     MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W);
94 }
95 
version(Unicode)96 version (Unicode) {
97     alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName;
98     alias BuildSecurityDescriptorW BuildSecurityDescriptor;
99     alias BuildTrusteeWithNameW BuildTrusteeWithName;
100     alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName;
101     alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid;
102     alias BuildTrusteeWithSidW BuildTrusteeWithSid;
103     alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl;
104     alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl;
105     alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl;
106     alias GetNamedSecurityInfoW GetNamedSecurityInfo;
107     alias GetTrusteeFormW GetTrusteeForm;
108     alias GetTrusteeNameW GetTrusteeName;
109     alias GetTrusteeTypeW GetTrusteeType;
110     alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts;
111     alias SetEntriesInAclW SetEntriesInAcl;
112     alias SetNamedSecurityInfoW SetNamedSecurityInfo;
113     alias BuildImpersonateExplicitAccessWithNameW
114       BuildImpersonateExplicitAccessWithName;
115     alias BuildImpersonateTrusteeW BuildImpersonateTrustee;
116     alias GetMultipleTrusteeW GetMultipleTrustee;
117     alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation;
118 } else {
119     alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName;
120     alias BuildSecurityDescriptorA BuildSecurityDescriptor;
121     alias BuildTrusteeWithNameA BuildTrusteeWithName;
122     alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName;
123     alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid;
124     alias BuildTrusteeWithSidA BuildTrusteeWithSid;
125     alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl;
126     alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl;
127     alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl;
128     alias GetNamedSecurityInfoA GetNamedSecurityInfo;
129     alias GetTrusteeFormA GetTrusteeForm;
130     alias GetTrusteeNameA GetTrusteeName;
131     alias GetTrusteeTypeA GetTrusteeType;
132     alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts;
133     alias SetEntriesInAclA SetEntriesInAcl;
134     alias SetNamedSecurityInfoA SetNamedSecurityInfo;
135     alias BuildImpersonateExplicitAccessWithNameA
136       BuildImpersonateExplicitAccessWithName;
137     alias BuildImpersonateTrusteeA BuildImpersonateTrustee;
138     alias GetMultipleTrusteeA GetMultipleTrustee;
139     alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation;
140 }
141