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