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