1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use shared::guiddef::GUID;
7 use shared::minwindef::{BOOL, DWORD, PULONG, ULONG, USHORT};
8 use um::accctrl::{
9     ACCESS_MODE, MULTIPLE_TRUSTEE_OPERATION, PEXPLICIT_ACCESS_A, PEXPLICIT_ACCESS_W,
10     PFN_OBJECT_MGR_FUNCTS, PINHERITED_FROMA, PINHERITED_FROMW, POBJECTS_AND_NAME_A,
11     POBJECTS_AND_NAME_W, POBJECTS_AND_SID, PPROG_INVOKE_SETTING, PROG_INVOKE_SETTING, PTRUSTEE_A,
12     PTRUSTEE_W, SE_OBJECT_TYPE, TRUSTEE_FORM, TRUSTEE_TYPE
13 };
14 use um::winnt::{
15     HANDLE, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PACCESS_MASK, PACL, PGENERIC_MAPPING,
16     PSECURITY_DESCRIPTOR, PSID, PVOID, SECURITY_INFORMATION
17 };
18 FN!{cdecl FN_PROGRESS(
19     pObjectName: LPWSTR,
20     Status: DWORD,
21     pInvokeSetting: PPROG_INVOKE_SETTING,
22     Args: PVOID,
23     SecuritySet: BOOL,
24 ) -> ()}
25 extern "system" {
SetEntriesInAclA( cCountOfExplicitEntries: ULONG, pListOfExplicitEntries: PEXPLICIT_ACCESS_A, OldAcl: PACL, NewAcl: *mut PACL, ) -> DWORD26     pub fn SetEntriesInAclA(
27         cCountOfExplicitEntries: ULONG,
28         pListOfExplicitEntries: PEXPLICIT_ACCESS_A,
29         OldAcl: PACL,
30         NewAcl: *mut PACL,
31     ) -> DWORD;
SetEntriesInAclW( cCountOfExplicitEntries: ULONG, pListOfExplicitEntries: PEXPLICIT_ACCESS_W, OldAcl: PACL, NewAcl: *mut PACL, ) -> DWORD32     pub fn SetEntriesInAclW(
33         cCountOfExplicitEntries: ULONG,
34         pListOfExplicitEntries: PEXPLICIT_ACCESS_W,
35         OldAcl: PACL,
36         NewAcl: *mut PACL,
37     ) -> DWORD;
GetExplicitEntriesFromAclA( pacl: PACL, pcCountOfExplicitEntries: PULONG, pListOfExplicitEntries: *mut PEXPLICIT_ACCESS_A, ) -> DWORD38     pub fn GetExplicitEntriesFromAclA(
39         pacl: PACL,
40         pcCountOfExplicitEntries: PULONG,
41         pListOfExplicitEntries: *mut PEXPLICIT_ACCESS_A,
42     ) -> DWORD;
GetExplicitEntriesFromAclW( pacl: PACL, pcCountOfExplicitEntries: PULONG, pListOfExplicitEntries: *mut PEXPLICIT_ACCESS_W, ) -> DWORD43     pub fn GetExplicitEntriesFromAclW(
44         pacl: PACL,
45         pcCountOfExplicitEntries: PULONG,
46         pListOfExplicitEntries: *mut PEXPLICIT_ACCESS_W,
47     ) -> DWORD;
GetEffectiveRightsFromAclA( pacl: PACL, pTrustee: PTRUSTEE_A, pAccessRight: PACCESS_MASK, ) -> DWORD48     pub fn GetEffectiveRightsFromAclA(
49         pacl: PACL,
50         pTrustee: PTRUSTEE_A,
51         pAccessRight: PACCESS_MASK,
52     ) -> DWORD;
GetEffectiveRightsFromAclW( pacl: PACL, pTrustee: PTRUSTEE_W, pAccessRight: PACCESS_MASK, ) -> DWORD53     pub fn GetEffectiveRightsFromAclW(
54         pacl: PACL,
55         pTrustee: PTRUSTEE_W,
56         pAccessRight: PACCESS_MASK,
57     ) -> DWORD;
GetAuditedPermissionsFromAclA( pAcl: PACL, pTrustee: PTRUSTEE_A, pSuccessfulAuditedRights: PACCESS_MASK, pFailedAuditRights: PACCESS_MASK, ) -> DWORD58     pub fn GetAuditedPermissionsFromAclA(
59         pAcl: PACL,
60         pTrustee: PTRUSTEE_A,
61         pSuccessfulAuditedRights: PACCESS_MASK,
62         pFailedAuditRights: PACCESS_MASK,
63     ) -> DWORD;
GetAuditedPermissionsFromAclW( pAcl: PACL, pTrustee: PTRUSTEE_W, pSuccessfulAuditedRights: PACCESS_MASK, pFailedAuditRights: PACCESS_MASK, ) -> DWORD64     pub fn GetAuditedPermissionsFromAclW(
65         pAcl: PACL,
66         pTrustee: PTRUSTEE_W,
67         pSuccessfulAuditedRights: PACCESS_MASK,
68         pFailedAuditRights: PACCESS_MASK,
69     ) -> DWORD;
GetNamedSecurityInfoA( pObjectName: LPCSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, ppsidOwner: *mut PSID, ppsidGroup: *mut PSID, ppDacl: *mut PACL, ppSacl: *mut PACL, ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, ) -> DWORD70     pub fn GetNamedSecurityInfoA(
71         pObjectName: LPCSTR,
72         ObjectType: SE_OBJECT_TYPE,
73         SecurityInfo: SECURITY_INFORMATION,
74         ppsidOwner: *mut PSID,
75         ppsidGroup: *mut PSID,
76         ppDacl: *mut PACL,
77         ppSacl: *mut PACL,
78         ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
79     ) -> DWORD;
GetNamedSecurityInfoW( pObjectName: LPCWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, ppsidOwner: *mut PSID, ppsidGroup: *mut PSID, ppDacl: *mut PACL, ppSacl: *mut PACL, ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, ) -> DWORD80     pub fn GetNamedSecurityInfoW(
81         pObjectName: LPCWSTR,
82         ObjectType: SE_OBJECT_TYPE,
83         SecurityInfo: SECURITY_INFORMATION,
84         ppsidOwner: *mut PSID,
85         ppsidGroup: *mut PSID,
86         ppDacl: *mut PACL,
87         ppSacl: *mut PACL,
88         ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
89     ) -> DWORD;
GetSecurityInfo( handle: HANDLE, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, ppsidOwner: *mut PSID, ppsidGroup: *mut PSID, ppDacl: *mut PACL, ppSacl: *mut PACL, ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, ) -> DWORD90     pub fn GetSecurityInfo(
91         handle: HANDLE,
92         ObjectType: SE_OBJECT_TYPE,
93         SecurityInfo: SECURITY_INFORMATION,
94         ppsidOwner: *mut PSID,
95         ppsidGroup: *mut PSID,
96         ppDacl: *mut PACL,
97         ppSacl: *mut PACL,
98         ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
99     ) -> DWORD;
SetNamedSecurityInfoA( pObjectame: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, psidOwner: PSID, psidGroup: PSID, pDacl: PACL, pSacl: PACL, ) -> DWORD100     pub fn SetNamedSecurityInfoA(
101         pObjectame: LPSTR,
102         ObjectType: SE_OBJECT_TYPE,
103         SecurityInfo: SECURITY_INFORMATION,
104         psidOwner: PSID,
105         psidGroup: PSID,
106         pDacl: PACL,
107         pSacl: PACL,
108     ) -> DWORD;
SetNamedSecurityInfoW( pObjectame: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, psidOwner: PSID, psidGroup: PSID, pDacl: PACL, pSacl: PACL, ) -> DWORD109     pub fn SetNamedSecurityInfoW(
110         pObjectame: LPWSTR,
111         ObjectType: SE_OBJECT_TYPE,
112         SecurityInfo: SECURITY_INFORMATION,
113         psidOwner: PSID,
114         psidGroup: PSID,
115         pDacl: PACL,
116         pSacl: PACL,
117     ) -> DWORD;
SetSecurityInfo( handle: HANDLE, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, psidOwner: PSID, psidGroup: PSID, pDacl: PACL, pSacl: PACL, ) -> DWORD118     pub fn SetSecurityInfo(
119         handle: HANDLE,
120         ObjectType: SE_OBJECT_TYPE,
121         SecurityInfo: SECURITY_INFORMATION,
122         psidOwner: PSID,
123         psidGroup: PSID,
124         pDacl: PACL,
125         pSacl: PACL,
126     ) -> DWORD;
GetInheritanceSourceA( pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, Container: BOOL, pObjectClassGuids: *mut *mut GUID, GuidCount: DWORD, pAcl: PACL, pfnArray: PFN_OBJECT_MGR_FUNCTS, pGenericMapping: PGENERIC_MAPPING, pInheritArray: PINHERITED_FROMA, ) -> DWORD127     pub fn GetInheritanceSourceA(
128         pObjectName: LPSTR,
129         ObjectType: SE_OBJECT_TYPE,
130         SecurityInfo: SECURITY_INFORMATION,
131         Container: BOOL,
132         pObjectClassGuids: *mut *mut GUID,
133         GuidCount: DWORD,
134         pAcl: PACL,
135         pfnArray: PFN_OBJECT_MGR_FUNCTS,
136         pGenericMapping: PGENERIC_MAPPING,
137         pInheritArray: PINHERITED_FROMA,
138     ) -> DWORD;
GetInheritanceSourceW( pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, Container: BOOL, pObjectClassGuids: *mut *mut GUID, GuidCount: DWORD, pAcl: PACL, pfnArray: PFN_OBJECT_MGR_FUNCTS, pGenericMapping: PGENERIC_MAPPING, pInheritArray: PINHERITED_FROMW, ) -> DWORD139     pub fn GetInheritanceSourceW(
140         pObjectName: LPWSTR,
141         ObjectType: SE_OBJECT_TYPE,
142         SecurityInfo: SECURITY_INFORMATION,
143         Container: BOOL,
144         pObjectClassGuids: *mut *mut GUID,
145         GuidCount: DWORD,
146         pAcl: PACL,
147         pfnArray: PFN_OBJECT_MGR_FUNCTS,
148         pGenericMapping: PGENERIC_MAPPING,
149         pInheritArray: PINHERITED_FROMW,
150     ) -> DWORD;
FreeInheritedFromArray( pInheritArray: PINHERITED_FROMW, AceCnt: USHORT, pfnArray: PFN_OBJECT_MGR_FUNCTS, ) -> DWORD151     pub fn FreeInheritedFromArray(
152         pInheritArray: PINHERITED_FROMW,
153         AceCnt: USHORT,
154         pfnArray: PFN_OBJECT_MGR_FUNCTS,
155     ) -> DWORD;
TreeResetNamedSecurityInfoA( pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, KeepExplicit: BOOL, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID, ) -> DWORD156     pub fn TreeResetNamedSecurityInfoA(
157         pObjectName: LPSTR,
158         ObjectType: SE_OBJECT_TYPE,
159         SecurityInfo: SECURITY_INFORMATION,
160         pOwner: PSID,
161         pGroup: PSID,
162         pDacl: PACL,
163         pSacl: PACL,
164         KeepExplicit: BOOL,
165         fnProgress: FN_PROGRESS,
166         ProgressInvokeSetting: PROG_INVOKE_SETTING,
167         Args: PVOID,
168     ) -> DWORD;
TreeResetNamedSecurityInfoW( pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, KeepExplicit: BOOL, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID, ) -> DWORD169     pub fn TreeResetNamedSecurityInfoW(
170         pObjectName: LPWSTR,
171         ObjectType: SE_OBJECT_TYPE,
172         SecurityInfo: SECURITY_INFORMATION,
173         pOwner: PSID,
174         pGroup: PSID,
175         pDacl: PACL,
176         pSacl: PACL,
177         KeepExplicit: BOOL,
178         fnProgress: FN_PROGRESS,
179         ProgressInvokeSetting: PROG_INVOKE_SETTING,
180         Args: PVOID,
181     ) -> DWORD;
TreeSetNamedSecurityInfoA( pObjectName: LPSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, dwAction: DWORD, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID, ) -> DWORD182     pub fn TreeSetNamedSecurityInfoA(
183         pObjectName: LPSTR,
184         ObjectType: SE_OBJECT_TYPE,
185         SecurityInfo: SECURITY_INFORMATION,
186         pOwner: PSID,
187         pGroup: PSID,
188         pDacl: PACL,
189         pSacl: PACL,
190         dwAction: DWORD,
191         fnProgress: FN_PROGRESS,
192         ProgressInvokeSetting: PROG_INVOKE_SETTING,
193         Args: PVOID,
194     ) -> DWORD;
TreeSetNamedSecurityInfoW( pObjectName: LPWSTR, ObjectType: SE_OBJECT_TYPE, SecurityInfo: SECURITY_INFORMATION, pOwner: PSID, pGroup: PSID, pDacl: PACL, pSacl: PACL, dwAction: DWORD, fnProgress: FN_PROGRESS, ProgressInvokeSetting: PROG_INVOKE_SETTING, Args: PVOID, ) -> DWORD195     pub fn TreeSetNamedSecurityInfoW(
196         pObjectName: LPWSTR,
197         ObjectType: SE_OBJECT_TYPE,
198         SecurityInfo: SECURITY_INFORMATION,
199         pOwner: PSID,
200         pGroup: PSID,
201         pDacl: PACL,
202         pSacl: PACL,
203         dwAction: DWORD,
204         fnProgress: FN_PROGRESS,
205         ProgressInvokeSetting: PROG_INVOKE_SETTING,
206         Args: PVOID,
207     ) -> DWORD;
BuildSecurityDescriptorA( pOwner: PTRUSTEE_A, pGroup: PTRUSTEE_A, cCountOfAccessEntries: ULONG, pListOfAccessEntries: PEXPLICIT_ACCESS_A, cCountOfAuditEntries: ULONG, pListOfAuditEntries: PEXPLICIT_ACCESS_A, pOldSD: PSECURITY_DESCRIPTOR, pSizeNewSD: PULONG, pNewSD: *mut PSECURITY_DESCRIPTOR, ) -> DWORD208     pub fn BuildSecurityDescriptorA(
209         pOwner: PTRUSTEE_A,
210         pGroup: PTRUSTEE_A,
211         cCountOfAccessEntries: ULONG,
212         pListOfAccessEntries: PEXPLICIT_ACCESS_A,
213         cCountOfAuditEntries: ULONG,
214         pListOfAuditEntries: PEXPLICIT_ACCESS_A,
215         pOldSD: PSECURITY_DESCRIPTOR,
216         pSizeNewSD: PULONG,
217         pNewSD: *mut PSECURITY_DESCRIPTOR,
218     ) -> DWORD;
BuildSecurityDescriptorW( pOwner: PTRUSTEE_W, pGroup: PTRUSTEE_W, cCountOfAccessEntries: ULONG, pListOfAccessEntries: PEXPLICIT_ACCESS_W, cCountOfAuditEntries: ULONG, pListOfAuditEntries: PEXPLICIT_ACCESS_W, pOldSD: PSECURITY_DESCRIPTOR, pSizeNewSD: PULONG, pNewSD: *mut PSECURITY_DESCRIPTOR, ) -> DWORD219     pub fn BuildSecurityDescriptorW(
220         pOwner: PTRUSTEE_W,
221         pGroup: PTRUSTEE_W,
222         cCountOfAccessEntries: ULONG,
223         pListOfAccessEntries: PEXPLICIT_ACCESS_W,
224         cCountOfAuditEntries: ULONG,
225         pListOfAuditEntries: PEXPLICIT_ACCESS_W,
226         pOldSD: PSECURITY_DESCRIPTOR,
227         pSizeNewSD: PULONG,
228         pNewSD: *mut PSECURITY_DESCRIPTOR,
229     ) -> DWORD;
LookupSecurityDescriptorPartsA( ppOwner: *mut PTRUSTEE_A, ppGroup: *mut PTRUSTEE_A, pcCountOfAccessEntries: PULONG, ppListOfAccessEntries: *mut PEXPLICIT_ACCESS_A, pcCountOfAuditEntries: PULONG, ppListOfAuditEntries: *mut PEXPLICIT_ACCESS_A, pSD: PSECURITY_DESCRIPTOR, ) -> DWORD230     pub fn LookupSecurityDescriptorPartsA(
231         ppOwner: *mut PTRUSTEE_A,
232         ppGroup: *mut PTRUSTEE_A,
233         pcCountOfAccessEntries: PULONG,
234         ppListOfAccessEntries: *mut PEXPLICIT_ACCESS_A,
235         pcCountOfAuditEntries: PULONG,
236         ppListOfAuditEntries: *mut PEXPLICIT_ACCESS_A,
237         pSD: PSECURITY_DESCRIPTOR,
238     ) -> DWORD;
LookupSecurityDescriptorPartsW( ppOwner: *mut PTRUSTEE_W, ppGroup: *mut PTRUSTEE_W, pcCountOfAccessEntries: PULONG, ppListOfAccessEntries: *mut PEXPLICIT_ACCESS_W, pcCountOfAuditEntries: PULONG, ppListOfAuditEntries: *mut PEXPLICIT_ACCESS_W, pSD: PSECURITY_DESCRIPTOR, ) -> DWORD239     pub fn LookupSecurityDescriptorPartsW(
240         ppOwner: *mut PTRUSTEE_W,
241         ppGroup: *mut PTRUSTEE_W,
242         pcCountOfAccessEntries: PULONG,
243         ppListOfAccessEntries: *mut PEXPLICIT_ACCESS_W,
244         pcCountOfAuditEntries: PULONG,
245         ppListOfAuditEntries: *mut PEXPLICIT_ACCESS_W,
246         pSD: PSECURITY_DESCRIPTOR,
247     ) -> DWORD;
BuildExplicitAccessWithNameA( pExplicitAccess: PEXPLICIT_ACCESS_A, pTrusteeName: LPSTR, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD, )248     pub fn BuildExplicitAccessWithNameA(
249         pExplicitAccess: PEXPLICIT_ACCESS_A,
250         pTrusteeName: LPSTR,
251         AccessPermissions: DWORD,
252         AccessMode: ACCESS_MODE,
253         Inheritance: DWORD,
254     );
BuildExplicitAccessWithNameW( pExplicitAccess: PEXPLICIT_ACCESS_W, pTrusteeName: LPWSTR, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD, )255     pub fn BuildExplicitAccessWithNameW(
256         pExplicitAccess: PEXPLICIT_ACCESS_W,
257         pTrusteeName: LPWSTR,
258         AccessPermissions: DWORD,
259         AccessMode: ACCESS_MODE,
260         Inheritance: DWORD,
261     );
BuildImpersonateExplicitAccessWithNameA( pExplicitAccess: PEXPLICIT_ACCESS_A, pTrusteeName: LPSTR, pTrustee: PTRUSTEE_A, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD, )262     pub fn BuildImpersonateExplicitAccessWithNameA(
263         pExplicitAccess: PEXPLICIT_ACCESS_A,
264         pTrusteeName: LPSTR,
265         pTrustee: PTRUSTEE_A,
266         AccessPermissions: DWORD,
267         AccessMode: ACCESS_MODE,
268         Inheritance: DWORD,
269     );
BuildImpersonateExplicitAccessWithNameW( pExplicitAccess: PEXPLICIT_ACCESS_W, pTrusteeName: LPWSTR, pTrustee: PTRUSTEE_W, AccessPermissions: DWORD, AccessMode: ACCESS_MODE, Inheritance: DWORD, )270     pub fn BuildImpersonateExplicitAccessWithNameW(
271         pExplicitAccess: PEXPLICIT_ACCESS_W,
272         pTrusteeName: LPWSTR,
273         pTrustee: PTRUSTEE_W,
274         AccessPermissions: DWORD,
275         AccessMode: ACCESS_MODE,
276         Inheritance: DWORD,
277     );
BuildTrusteeWithNameA( pTrustee: PTRUSTEE_A, pName: LPSTR, )278     pub fn BuildTrusteeWithNameA(
279         pTrustee: PTRUSTEE_A,
280         pName: LPSTR,
281     );
BuildTrusteeWithNameW( pTrustee: PTRUSTEE_W, pName: LPWSTR, )282     pub fn BuildTrusteeWithNameW(
283         pTrustee: PTRUSTEE_W,
284         pName: LPWSTR,
285     );
BuildImpersonateTrusteeA( pTrustee: PTRUSTEE_A, pImpersonateTrustee: PTRUSTEE_A, )286     pub fn BuildImpersonateTrusteeA(
287         pTrustee: PTRUSTEE_A,
288         pImpersonateTrustee: PTRUSTEE_A,
289     );
BuildImpersonateTrusteeW( pTrustee: PTRUSTEE_W, pImpersonateTrustee: PTRUSTEE_W, )290     pub fn BuildImpersonateTrusteeW(
291         pTrustee: PTRUSTEE_W,
292         pImpersonateTrustee: PTRUSTEE_W,
293     );
BuildTrusteeWithSidA( pTrustee: PTRUSTEE_A, pSid: PSID, )294     pub fn BuildTrusteeWithSidA(
295         pTrustee: PTRUSTEE_A,
296         pSid: PSID,
297     );
BuildTrusteeWithSidW( pTrustee: PTRUSTEE_W, pSid: PSID, )298     pub fn BuildTrusteeWithSidW(
299         pTrustee: PTRUSTEE_W,
300         pSid: PSID,
301     );
BuildTrusteeWithObjectsAndSidA( pTrustee: PTRUSTEE_A, pObjSid: POBJECTS_AND_SID, pObjectGuid: *mut GUID, pInheritedObjectGuid: *mut GUID, pSid: PSID, )302     pub fn BuildTrusteeWithObjectsAndSidA(
303         pTrustee: PTRUSTEE_A,
304         pObjSid: POBJECTS_AND_SID,
305         pObjectGuid: *mut GUID,
306         pInheritedObjectGuid: *mut GUID,
307         pSid: PSID,
308     );
BuildTrusteeWithObjectsAndSidW( pTrustee: PTRUSTEE_W, pObjSid: POBJECTS_AND_SID, pObjectGuid: *mut GUID, pInheritedObjectGuid: *mut GUID, pSid: PSID, )309     pub fn BuildTrusteeWithObjectsAndSidW(
310         pTrustee: PTRUSTEE_W,
311         pObjSid: POBJECTS_AND_SID,
312         pObjectGuid: *mut GUID,
313         pInheritedObjectGuid: *mut GUID,
314         pSid: PSID,
315     );
BuildTrusteeWithObjectsAndNameA( pTrustee: PTRUSTEE_A, pObjName: POBJECTS_AND_NAME_A, ObjectType: SE_OBJECT_TYPE, ObjectTypeName: LPSTR, InheritedObjectTypeName: LPSTR, Name: LPSTR, )316     pub fn BuildTrusteeWithObjectsAndNameA(
317         pTrustee: PTRUSTEE_A,
318         pObjName: POBJECTS_AND_NAME_A,
319         ObjectType: SE_OBJECT_TYPE,
320         ObjectTypeName: LPSTR,
321         InheritedObjectTypeName: LPSTR,
322         Name: LPSTR,
323     );
BuildTrusteeWithObjectsAndNameW( pTrustee: PTRUSTEE_W, pObjName: POBJECTS_AND_NAME_W, ObjectType: SE_OBJECT_TYPE, ObjectTypeName: LPWSTR, InheritedObjectTypeName: LPWSTR, Name: LPWSTR, )324     pub fn BuildTrusteeWithObjectsAndNameW(
325         pTrustee: PTRUSTEE_W,
326         pObjName: POBJECTS_AND_NAME_W,
327         ObjectType: SE_OBJECT_TYPE,
328         ObjectTypeName: LPWSTR,
329         InheritedObjectTypeName: LPWSTR,
330         Name: LPWSTR,
331     );
GetTrusteeNameA( pTrustee: PTRUSTEE_A, ) -> LPSTR332     pub fn GetTrusteeNameA(
333         pTrustee: PTRUSTEE_A,
334     ) -> LPSTR;
GetTrusteeNameW( pTrustee: PTRUSTEE_W, ) -> LPWSTR335     pub fn GetTrusteeNameW(
336         pTrustee: PTRUSTEE_W,
337     ) -> LPWSTR;
GetTrusteeTypeA( pTrustee: PTRUSTEE_A, ) -> TRUSTEE_TYPE338     pub fn GetTrusteeTypeA(
339         pTrustee: PTRUSTEE_A,
340     ) -> TRUSTEE_TYPE;
GetTrusteeTypeW( pTrustee: PTRUSTEE_W, ) -> TRUSTEE_TYPE341     pub fn GetTrusteeTypeW(
342         pTrustee: PTRUSTEE_W,
343     ) -> TRUSTEE_TYPE;
GetTrusteeFormA( pTrustee: PTRUSTEE_A, ) -> TRUSTEE_FORM344     pub fn GetTrusteeFormA(
345         pTrustee: PTRUSTEE_A,
346     ) -> TRUSTEE_FORM;
GetTrusteeFormW( pTrustee: PTRUSTEE_W, ) -> TRUSTEE_FORM347     pub fn GetTrusteeFormW(
348         pTrustee: PTRUSTEE_W,
349     ) -> TRUSTEE_FORM;
GetMultipleTrusteeOperationA( pTrustee: PTRUSTEE_A, ) -> MULTIPLE_TRUSTEE_OPERATION350     pub fn GetMultipleTrusteeOperationA(
351         pTrustee: PTRUSTEE_A,
352     ) -> MULTIPLE_TRUSTEE_OPERATION;
GetMultipleTrusteeOperationW( pTrustee: PTRUSTEE_W, ) -> MULTIPLE_TRUSTEE_OPERATION353     pub fn GetMultipleTrusteeOperationW(
354         pTrustee: PTRUSTEE_W,
355     ) -> MULTIPLE_TRUSTEE_OPERATION;
GetMultipleTrusteeA( pTrustee: PTRUSTEE_A, ) -> PTRUSTEE_A356     pub fn GetMultipleTrusteeA(
357         pTrustee: PTRUSTEE_A,
358     ) -> PTRUSTEE_A;
GetMultipleTrusteeW( pTrustee: PTRUSTEE_W, ) -> PTRUSTEE_W359     pub fn GetMultipleTrusteeW(
360         pTrustee: PTRUSTEE_W,
361     ) -> PTRUSTEE_W;
362 }
363