1 // Copyright © 2016-2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 //! FFI bindings to psapi.
8 
9 use shared::guiddef::GUID;
10 use shared::minwindef::{
11     BOOL, BYTE, DWORD, LPBOOL, LPDWORD, LPVOID, PBOOL, PDWORD, PUCHAR, PULONG, UCHAR, ULONG
12 };
13 use um::minwinbase::LPSECURITY_ATTRIBUTES;
14 use um::winnt::{
15     ACL_INFORMATION_CLASS, AUDIT_EVENT_TYPE, BOOLEAN, HANDLE, LONG, LPCWSTR, LPWSTR, PACL,
16     PCLAIM_SECURITY_ATTRIBUTES_INFORMATION, PCWSTR, PGENERIC_MAPPING, PHANDLE, PLUID,
17     PLUID_AND_ATTRIBUTES, POBJECT_TYPE_LIST, PPRIVILEGE_SET, PSECURITY_DESCRIPTOR,
18     PSECURITY_DESCRIPTOR_CONTROL, PSID, PSID_AND_ATTRIBUTES, PSID_IDENTIFIER_AUTHORITY,
19     PTOKEN_GROUPS, PTOKEN_PRIVILEGES, PVOID, SECURITY_DESCRIPTOR_CONTROL,
20     SECURITY_IMPERSONATION_LEVEL, SECURITY_INFORMATION, TOKEN_INFORMATION_CLASS, TOKEN_TYPE,
21     WELL_KNOWN_SID_TYPE
22 };
23 
24 extern "system" {
AccessCheck( pSecurityDescriptor: PSECURITY_DESCRIPTOR, ClientToken: HANDLE, DesiredAccess: DWORD, GenericMapping: PGENERIC_MAPPING, PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, ) -> BOOL25     pub fn AccessCheck(
26         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
27         ClientToken: HANDLE,
28         DesiredAccess: DWORD,
29         GenericMapping: PGENERIC_MAPPING,
30         PrivilegeSet: PPRIVILEGE_SET,
31         PrivilegeSetLength: LPDWORD,
32         GrantedAccess: LPDWORD,
33         AccessStatus: LPBOOL,
34     ) -> BOOL;
AccessCheckAndAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPWSTR, ObjectName: LPWSTR, SecurityDescriptor: PSECURITY_DESCRIPTOR, DesiredAccess: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: BOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL, ) -> BOOL35     pub fn AccessCheckAndAuditAlarmW(
36         SubsystemName: LPCWSTR,
37         HandleId: LPVOID,
38         ObjectTypeName: LPWSTR,
39         ObjectName: LPWSTR,
40         SecurityDescriptor: PSECURITY_DESCRIPTOR,
41         DesiredAccess: DWORD,
42         GenericMapping: PGENERIC_MAPPING,
43         ObjectCreation: BOOL,
44         GrantedAccess: LPDWORD,
45         AccessStatus: LPBOOL,
46         pfGenerateOnClose: LPBOOL,
47     ) -> BOOL;
AccessCheckByType( pSecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, ClientToken: HANDLE, DesiredAccess: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, ) -> BOOL48     pub fn AccessCheckByType(
49         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
50         PrincipalSelfSid: PSID,
51         ClientToken: HANDLE,
52         DesiredAccess: DWORD,
53         ObjectTypeList: POBJECT_TYPE_LIST,
54         ObjectTypeListLength: DWORD,
55         GenericMapping: PGENERIC_MAPPING,
56         PrivilegeSet: PPRIVILEGE_SET,
57         PrivilegeSetLength: LPDWORD,
58         GrantedAccess: LPDWORD,
59         AccessStatus: LPBOOL,
60     ) -> BOOL;
AccessCheckByTypeResultList( pSecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, ClientToken: HANDLE, DesiredAccess: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD, GrantedAccessList: LPDWORD, AccessStatusList: LPDWORD, ) -> BOOL61     pub fn AccessCheckByTypeResultList(
62         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
63         PrincipalSelfSid: PSID,
64         ClientToken: HANDLE,
65         DesiredAccess: DWORD,
66         ObjectTypeList: POBJECT_TYPE_LIST,
67         ObjectTypeListLength: DWORD,
68         GenericMapping: PGENERIC_MAPPING,
69         PrivilegeSet: PPRIVILEGE_SET,
70         PrivilegeSetLength: LPDWORD,
71         GrantedAccessList: LPDWORD,
72         AccessStatusList: LPDWORD,
73         ) -> BOOL;
AccessCheckByTypeAndAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPWSTR, ObjectName: LPCWSTR, pSecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: BOOL, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL, ) -> BOOL74     pub fn AccessCheckByTypeAndAuditAlarmW(
75         SubsystemName: LPCWSTR,
76         HandleId: LPVOID,
77         ObjectTypeName: LPWSTR,
78         ObjectName: LPCWSTR,
79         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
80         PrincipalSelfSid: PSID,
81         DesiredAccess: DWORD,
82         AuditType: AUDIT_EVENT_TYPE,
83         Flags: DWORD,
84         ObjectTypeList: POBJECT_TYPE_LIST,
85         ObjectTypeListLength: DWORD,
86         GenericMapping: PGENERIC_MAPPING,
87         ObjectCreation: BOOL,
88         GrantedAccess: LPDWORD,
89         AccessStatus: LPBOOL,
90         pfGenerateOnClose: LPBOOL,
91     ) -> BOOL;
AccessCheckByTypeResultListAndAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPCWSTR, ObjectName: LPCWSTR, pSecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: BOOL, GrantedAccess: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL, ) -> BOOL92     pub fn AccessCheckByTypeResultListAndAuditAlarmW(
93         SubsystemName: LPCWSTR,
94         HandleId: LPVOID,
95         ObjectTypeName: LPCWSTR,
96         ObjectName: LPCWSTR,
97         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
98         PrincipalSelfSid: PSID,
99         DesiredAccess: DWORD,
100         AuditType: AUDIT_EVENT_TYPE,
101         Flags: DWORD,
102         ObjectTypeList: POBJECT_TYPE_LIST,
103         ObjectTypeListLength: DWORD,
104         GenericMapping: PGENERIC_MAPPING,
105         ObjectCreation: BOOL,
106         GrantedAccess: LPDWORD,
107         AccessStatusList: LPDWORD,
108         pfGenerateOnClose: LPBOOL,
109     ) -> BOOL;
AccessCheckByTypeResultListAndAuditAlarmByHandleW( SubsystemName: LPCWSTR, HandleId: LPVOID, ClientToken: HANDLE, ObjectTypeName: LPCWSTR, ObjectName: LPCWSTR, pSecurityDescriptor: PSECURITY_DESCRIPTOR, PrincipalSelfSid: PSID, DesiredAccess: DWORD, AuditType: AUDIT_EVENT_TYPE, Flags: DWORD, ObjectTypeList: POBJECT_TYPE_LIST, ObjectTypeListLength: DWORD, GenericMapping: PGENERIC_MAPPING, ObjectCreation: BOOL, GrantedAccess: LPDWORD, AccessStatusList: LPDWORD, pfGenerateOnClose: LPBOOL, ) -> BOOL110     pub fn AccessCheckByTypeResultListAndAuditAlarmByHandleW(
111         SubsystemName: LPCWSTR,
112         HandleId: LPVOID,
113         ClientToken: HANDLE,
114         ObjectTypeName: LPCWSTR,
115         ObjectName: LPCWSTR,
116         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
117         PrincipalSelfSid: PSID,
118         DesiredAccess: DWORD,
119         AuditType: AUDIT_EVENT_TYPE,
120         Flags: DWORD,
121         ObjectTypeList: POBJECT_TYPE_LIST,
122         ObjectTypeListLength: DWORD,
123         GenericMapping: PGENERIC_MAPPING,
124         ObjectCreation: BOOL,
125         GrantedAccess: LPDWORD,
126         AccessStatusList: LPDWORD,
127         pfGenerateOnClose: LPBOOL,
128     ) -> BOOL;
AddAccessAllowedAce( pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL129     pub fn AddAccessAllowedAce(
130         pAcl: PACL,
131         dwAceRevision: DWORD,
132         AccessMask: DWORD,
133         pSid: PSID,
134     ) -> BOOL;
AddAccessAllowedAceEx( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL135     pub fn AddAccessAllowedAceEx(
136         pAcl: PACL,
137         dwAceRevision: DWORD,
138         AceFlags: DWORD,
139         AccessMask: DWORD,
140         pSid: PSID,
141     ) -> BOOL;
AddAccessAllowedObjectAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: *mut GUID, InheritedObjectTypeGuid: *mut GUID, pSid: PSID, ) -> BOOL142     pub fn AddAccessAllowedObjectAce(
143         pAcl: PACL,
144         dwAceRevision: DWORD,
145         AceFlags: DWORD,
146         AccessMask: DWORD,
147         ObjectTypeGuid: *mut GUID,
148         InheritedObjectTypeGuid: *mut GUID,
149         pSid: PSID,
150     ) -> BOOL;
AddAccessDeniedAce( pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL151     pub fn AddAccessDeniedAce(
152         pAcl: PACL,
153         dwAceRevision: DWORD,
154         AccessMask: DWORD,
155         pSid: PSID,
156     ) -> BOOL;
AddAccessDeniedAceEx( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL157     pub fn AddAccessDeniedAceEx(
158         pAcl: PACL,
159         dwAceRevision: DWORD,
160         AceFlags: DWORD,
161         AccessMask: DWORD,
162         pSid: PSID,
163     ) -> BOOL;
AddAccessDeniedObjectAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: *mut GUID, InheritedObjectTypeGuid: *mut GUID, pSid: PSID, ) -> BOOL164     pub fn AddAccessDeniedObjectAce(
165         pAcl: PACL,
166         dwAceRevision: DWORD,
167         AceFlags: DWORD,
168         AccessMask: DWORD,
169         ObjectTypeGuid: *mut GUID,
170         InheritedObjectTypeGuid: *mut GUID,
171         pSid: PSID,
172     ) -> BOOL;
AddAce( pAcl: PACL, dwAceRevision: DWORD, dwStartingAceIndex: DWORD, pAceList: LPVOID, nAceListLength: DWORD, ) -> BOOL173     pub fn AddAce(
174         pAcl: PACL,
175         dwAceRevision: DWORD,
176         dwStartingAceIndex: DWORD,
177         pAceList: LPVOID,
178         nAceListLength: DWORD,
179     ) -> BOOL;
AddAuditAccessAce( pAcl: PACL, dwAceRevision: DWORD, dwAccessMask: DWORD, pSid: PSID, bAuditSuccess: BOOL, bAuditFailure: BOOL, ) -> BOOL180     pub fn AddAuditAccessAce(
181         pAcl: PACL,
182         dwAceRevision: DWORD,
183         dwAccessMask: DWORD,
184         pSid: PSID,
185         bAuditSuccess: BOOL,
186         bAuditFailure: BOOL,
187     ) -> BOOL;
AddAuditAccessAceEx( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, dwAccessMask: DWORD, pSid: PSID, bAuditSuccess: BOOL, bAuditFailure: BOOL, ) -> BOOL188     pub fn AddAuditAccessAceEx(
189         pAcl: PACL,
190         dwAceRevision: DWORD,
191         AceFlags: DWORD,
192         dwAccessMask: DWORD,
193         pSid: PSID,
194         bAuditSuccess: BOOL,
195         bAuditFailure: BOOL,
196     ) -> BOOL;
AddAuditAccessObjectAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: *mut GUID, InheritedObjectTypeGuid: *mut GUID, pSid: PSID, bAuditSuccess: BOOL, bAuditFailure: BOOL, ) -> BOOL197     pub fn AddAuditAccessObjectAce(
198         pAcl: PACL,
199         dwAceRevision: DWORD,
200         AceFlags: DWORD,
201         AccessMask: DWORD,
202         ObjectTypeGuid: *mut GUID,
203         InheritedObjectTypeGuid: *mut GUID,
204         pSid: PSID,
205         bAuditSuccess: BOOL,
206         bAuditFailure: BOOL,
207     ) -> BOOL;
AddMandatoryAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, MandatoryPolicy: DWORD, pLabelSid: PSID, ) -> BOOL208     pub fn AddMandatoryAce(
209         pAcl: PACL,
210         dwAceRevision: DWORD,
211         AceFlags: DWORD,
212         MandatoryPolicy: DWORD,
213         pLabelSid: PSID,
214     ) -> BOOL;
AddResourceAttributeAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, pAttributeInfo: PCLAIM_SECURITY_ATTRIBUTES_INFORMATION, pReturnLength: PDWORD, ) -> BOOL215     pub fn AddResourceAttributeAce(
216         pAcl: PACL,
217         dwAceRevision: DWORD,
218         AceFlags: DWORD,
219         AccessMask: DWORD,
220         pSid: PSID,
221         pAttributeInfo: PCLAIM_SECURITY_ATTRIBUTES_INFORMATION,
222         pReturnLength: PDWORD,
223     ) -> BOOL;
AddScopedPolicyIDAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL224     pub fn AddScopedPolicyIDAce(
225         pAcl: PACL,
226         dwAceRevision: DWORD,
227         AceFlags: DWORD,
228         AccessMask: DWORD,
229         pSid: PSID,
230     ) -> BOOL;
AdjustTokenGroups( TokenHandle: HANDLE, ResetToDefault: BOOL, NewState: PTOKEN_GROUPS, BufferLength: DWORD, PreviousState: PTOKEN_GROUPS, ReturnLength: PDWORD, ) -> BOOL231     pub fn AdjustTokenGroups(
232         TokenHandle: HANDLE,
233         ResetToDefault: BOOL,
234         NewState: PTOKEN_GROUPS,
235         BufferLength: DWORD,
236         PreviousState: PTOKEN_GROUPS,
237         ReturnLength: PDWORD,
238     ) -> BOOL;
AdjustTokenPrivileges( TokenHandle: HANDLE, DisableAllPrivileges: BOOL, NewState: PTOKEN_PRIVILEGES, BufferLength: DWORD, PreviousState: PTOKEN_PRIVILEGES, ReturnLength: PDWORD, ) -> BOOL239     pub fn AdjustTokenPrivileges(
240         TokenHandle: HANDLE,
241         DisableAllPrivileges: BOOL,
242         NewState: PTOKEN_PRIVILEGES,
243         BufferLength: DWORD,
244         PreviousState: PTOKEN_PRIVILEGES,
245         ReturnLength: PDWORD,
246     ) -> BOOL;
AllocateAndInitializeSid( pIdentifierAuthoirity: PSID_IDENTIFIER_AUTHORITY, nSubAuthorityCount: BYTE, dwSubAuthority0: DWORD, dwSubAuthority1: DWORD, dwSubAuthority2: DWORD, dwSubAuthority3: DWORD, dwSubAuthority4: DWORD, dwSubAuthority5: DWORD, dwSubAuthority6: DWORD, dwSubAuthority7: DWORD, pSid: *mut PSID, ) -> BOOL247     pub fn AllocateAndInitializeSid(
248         pIdentifierAuthoirity: PSID_IDENTIFIER_AUTHORITY,
249         nSubAuthorityCount: BYTE,
250         dwSubAuthority0: DWORD,
251         dwSubAuthority1: DWORD,
252         dwSubAuthority2: DWORD,
253         dwSubAuthority3: DWORD,
254         dwSubAuthority4: DWORD,
255         dwSubAuthority5: DWORD,
256         dwSubAuthority6: DWORD,
257         dwSubAuthority7: DWORD,
258         pSid: *mut PSID,
259     ) -> BOOL;
AllocateLocallyUniqueId( Luid: PLUID, ) -> BOOL260     pub fn AllocateLocallyUniqueId(
261         Luid: PLUID,
262     ) -> BOOL;
AreAllAccessesGranted( GrantedAccess: DWORD, DesiredAccess: DWORD, ) -> BOOL263     pub fn AreAllAccessesGranted(
264         GrantedAccess: DWORD,
265         DesiredAccess: DWORD,
266     ) -> BOOL;
AreAnyAccessesGranted( GrantedAccess: DWORD, DesiredAccess: DWORD, ) -> BOOL267     pub fn AreAnyAccessesGranted(
268         GrantedAccess: DWORD,
269         DesiredAccess: DWORD,
270     ) -> BOOL;
CheckTokenMembership( TokenHandle: HANDLE, SidToCheck: PSID, IsMember: PBOOL, ) -> BOOL271     pub fn CheckTokenMembership(
272         TokenHandle: HANDLE,
273         SidToCheck: PSID,
274         IsMember: PBOOL,
275     ) -> BOOL;
CheckTokenCapability( TokenHandle: HANDLE, CapabilitySidToCheck: PSID, HasCapability: PBOOL, ) -> BOOL276     pub fn CheckTokenCapability(
277         TokenHandle: HANDLE,
278         CapabilitySidToCheck: PSID,
279         HasCapability: PBOOL,
280     ) -> BOOL;
GetAppContainerAce( Acl: PACL, StartingAceIndex: DWORD, AppContainerAce: *mut PVOID, AppContainerAceIndex: *mut DWORD, ) -> BOOL281     pub fn GetAppContainerAce(
282         Acl: PACL,
283         StartingAceIndex: DWORD,
284         AppContainerAce: *mut PVOID,
285         AppContainerAceIndex: *mut DWORD,
286     ) -> BOOL;
CheckTokenMembershipEx( TokenHandle: HANDLE, SidToCheck: PSID, Flags: DWORD, IsMember: PBOOL, ) -> BOOL287     pub fn CheckTokenMembershipEx(
288         TokenHandle: HANDLE,
289         SidToCheck: PSID,
290         Flags: DWORD,
291         IsMember: PBOOL,
292     ) -> BOOL;
ConvertToAutoInheritPrivateObjectSecurity( ParentDescriptor: PSECURITY_DESCRIPTOR, CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR, NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, ObjectType: *mut GUID, IsDirectoryObject: BOOLEAN, GenericMapping: PGENERIC_MAPPING, ) -> BOOL293     pub fn ConvertToAutoInheritPrivateObjectSecurity(
294         ParentDescriptor: PSECURITY_DESCRIPTOR,
295         CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR,
296         NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
297         ObjectType: *mut GUID,
298         IsDirectoryObject: BOOLEAN,
299         GenericMapping: PGENERIC_MAPPING,
300     ) -> BOOL;
CopySid( nDestinationSidLength: DWORD, pDestinationSid: PSID, pSourceSid: PSID, ) -> BOOL301     pub fn CopySid(
302         nDestinationSidLength: DWORD,
303         pDestinationSid: PSID,
304         pSourceSid: PSID,
305     ) -> BOOL;
CreatePrivateObjectSecurity( ParentDescriptor: PSECURITY_DESCRIPTOR, CreatorDescriptor: PSECURITY_DESCRIPTOR, NewDescriptor: *mut PSECURITY_DESCRIPTOR, IsDirectoryObject: BOOL, Token: HANDLE, GenericMapping: PGENERIC_MAPPING, ) -> BOOL306     pub fn CreatePrivateObjectSecurity(
307         ParentDescriptor: PSECURITY_DESCRIPTOR,
308         CreatorDescriptor: PSECURITY_DESCRIPTOR,
309         NewDescriptor: *mut PSECURITY_DESCRIPTOR,
310         IsDirectoryObject: BOOL,
311         Token: HANDLE,
312         GenericMapping: PGENERIC_MAPPING,
313     ) -> BOOL;
CreatePrivateObjectSecurityEx( ParentDescriptor: PSECURITY_DESCRIPTOR, CreatorDescriptor: PSECURITY_DESCRIPTOR, NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, ObjectType: *mut GUID, IsContainerObject: BOOL, AutoInheritFlags: ULONG, Token: HANDLE, GenericMapping: PGENERIC_MAPPING, ) -> BOOL314     pub fn CreatePrivateObjectSecurityEx(
315         ParentDescriptor: PSECURITY_DESCRIPTOR,
316         CreatorDescriptor: PSECURITY_DESCRIPTOR,
317         NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
318         ObjectType: *mut GUID,
319         IsContainerObject: BOOL,
320         AutoInheritFlags: ULONG,
321         Token: HANDLE,
322         GenericMapping: PGENERIC_MAPPING,
323     ) -> BOOL;
CreatePrivateObjectSecurityWithMultipleInheritance( ParentDescriptor: PSECURITY_DESCRIPTOR, CreatorDescriptor: PSECURITY_DESCRIPTOR, NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, ObjectTypes: *mut *mut GUID, GuidCount: ULONG, IsContainerObject: BOOL, AutoInheritFlags: ULONG, Token: HANDLE, GenericMapping: PGENERIC_MAPPING, ) -> BOOL324     pub fn CreatePrivateObjectSecurityWithMultipleInheritance(
325         ParentDescriptor: PSECURITY_DESCRIPTOR,
326         CreatorDescriptor: PSECURITY_DESCRIPTOR,
327         NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
328         ObjectTypes: *mut *mut GUID,
329         GuidCount: ULONG,
330         IsContainerObject: BOOL,
331         AutoInheritFlags: ULONG,
332         Token: HANDLE,
333         GenericMapping: PGENERIC_MAPPING,
334     ) -> BOOL;
CreateRestrictedToken( ExistingTokenHandle: HANDLE, Flags: DWORD, DisableSidCount: DWORD, SidsToDisable: PSID_AND_ATTRIBUTES, DeletePrivilegeCount: DWORD, PrivilegesToDelete: PLUID_AND_ATTRIBUTES, RestrictedSidCount: DWORD, SidsToRestrict: PSID_AND_ATTRIBUTES, NewTokenHandle: PHANDLE, ) -> BOOL335     pub fn CreateRestrictedToken(
336         ExistingTokenHandle: HANDLE,
337         Flags: DWORD,
338         DisableSidCount: DWORD,
339         SidsToDisable: PSID_AND_ATTRIBUTES,
340         DeletePrivilegeCount: DWORD,
341         PrivilegesToDelete: PLUID_AND_ATTRIBUTES,
342         RestrictedSidCount: DWORD,
343         SidsToRestrict: PSID_AND_ATTRIBUTES,
344         NewTokenHandle: PHANDLE,
345     ) -> BOOL;
CreateWellKnownSid( WellKnownSidType: WELL_KNOWN_SID_TYPE, DomainSid: PSID, pSid: PSID, cbSid: *mut DWORD, ) -> BOOL346     pub fn CreateWellKnownSid(
347         WellKnownSidType: WELL_KNOWN_SID_TYPE,
348         DomainSid: PSID,
349         pSid: PSID,
350         cbSid: *mut DWORD,
351     ) -> BOOL;
EqualDomainSid( pSid1: PSID, pSid2: PSID, pfEqual: *mut BOOL, ) -> BOOL352     pub fn EqualDomainSid(
353         pSid1: PSID,
354         pSid2: PSID,
355         pfEqual: *mut BOOL,
356     ) -> BOOL;
DeleteAce( pAcl: PACL, dwAceIndex: DWORD, ) -> BOOL357     pub fn DeleteAce(
358         pAcl: PACL,
359         dwAceIndex: DWORD,
360     ) -> BOOL;
DestroyPrivateObjectSecurity( ObjectDescriptor: *mut PSECURITY_DESCRIPTOR, ) -> BOOL361     pub fn DestroyPrivateObjectSecurity(
362         ObjectDescriptor: *mut PSECURITY_DESCRIPTOR,
363     ) -> BOOL;
DuplicateToken( ExistingTokenHandle: HANDLE, ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL, DuplicateTokenHandle: PHANDLE, ) -> BOOL364     pub fn DuplicateToken(
365         ExistingTokenHandle: HANDLE,
366         ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
367         DuplicateTokenHandle: PHANDLE,
368     ) -> BOOL;
DuplicateTokenEx( hExistingToken: HANDLE, dwDesiredAccess: DWORD, lpTokenAttributes: LPSECURITY_ATTRIBUTES, ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL, TokenType: TOKEN_TYPE, phNewToken: PHANDLE, ) -> BOOL369     pub fn DuplicateTokenEx(
370         hExistingToken: HANDLE,
371         dwDesiredAccess: DWORD,
372         lpTokenAttributes: LPSECURITY_ATTRIBUTES,
373         ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
374         TokenType: TOKEN_TYPE,
375         phNewToken: PHANDLE,
376     ) -> BOOL;
EqualPrefixSid( pSid1: PSID, pSid2: PSID, ) -> BOOL377     pub fn EqualPrefixSid(
378         pSid1: PSID,
379         pSid2: PSID,
380     ) -> BOOL;
EqualSid( pSid1: PSID, pSid2: PSID, ) -> BOOL381     pub fn EqualSid(
382         pSid1: PSID,
383         pSid2: PSID,
384     ) -> BOOL;
FindFirstFreeAce( pAcl: PACL, pAce: *mut LPVOID, ) -> BOOL385     pub fn FindFirstFreeAce(
386         pAcl: PACL,
387         pAce: *mut LPVOID,
388     ) -> BOOL;
FreeSid( pSid: PSID ) -> PVOID389     pub fn FreeSid(
390         pSid: PSID
391     ) -> PVOID;
GetAce( pAcl: PACL, dwAceIndex: DWORD, pAce: *mut LPVOID, ) -> BOOL392     pub fn GetAce(
393         pAcl: PACL,
394         dwAceIndex: DWORD,
395         pAce: *mut LPVOID,
396     ) -> BOOL;
GetAclInformation( pAcl: PACL, pAclInformtion: LPVOID, nAclInformationLength: DWORD, dwAclInformationClass: ACL_INFORMATION_CLASS, ) -> BOOL397     pub fn GetAclInformation(
398         pAcl: PACL,
399         pAclInformtion: LPVOID,
400         nAclInformationLength: DWORD,
401         dwAclInformationClass: ACL_INFORMATION_CLASS,
402     ) -> BOOL;
GetFileSecurityW( lpFileName: LPCWSTR, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL403     pub fn GetFileSecurityW(
404         lpFileName: LPCWSTR,
405         RequestedInformation: SECURITY_INFORMATION,
406         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
407         nLength: DWORD,
408         lpnLengthNeeded: LPDWORD,
409     ) -> BOOL;
GetKernelObjectSecurity( Handle: HANDLE, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL410     pub fn GetKernelObjectSecurity(
411         Handle: HANDLE,
412         RequestedInformation: SECURITY_INFORMATION,
413         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
414         nLength: DWORD,
415         lpnLengthNeeded: LPDWORD,
416     ) -> BOOL;
GetLengthSid( pSid: PSID, ) -> DWORD417     pub fn GetLengthSid(
418         pSid: PSID,
419     ) -> DWORD;
GetPrivateObjectSecurity( ObjectDescriptor: PSECURITY_DESCRIPTOR, SecurityInformation: SECURITY_INFORMATION, ResultantDescriptor: PSECURITY_DESCRIPTOR, DescriptorLength: DWORD, ReturnLength: PDWORD, ) -> BOOL420     pub fn GetPrivateObjectSecurity(
421         ObjectDescriptor: PSECURITY_DESCRIPTOR,
422         SecurityInformation: SECURITY_INFORMATION,
423         ResultantDescriptor: PSECURITY_DESCRIPTOR,
424         DescriptorLength: DWORD,
425         ReturnLength: PDWORD,
426     ) -> BOOL;
GetSecurityDescriptorControl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pControl: PSECURITY_DESCRIPTOR_CONTROL, lpdwRevision: LPDWORD, ) -> BOOL427     pub fn GetSecurityDescriptorControl(
428         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
429         pControl: PSECURITY_DESCRIPTOR_CONTROL,
430         lpdwRevision: LPDWORD,
431     ) -> BOOL;
GetSecurityDescriptorDacl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, lpbDaclPresent: LPBOOL, pDacl: *mut PACL, lpbDaclDefaulted: LPBOOL, ) -> BOOL432     pub fn GetSecurityDescriptorDacl(
433         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
434         lpbDaclPresent: LPBOOL,
435         pDacl: *mut PACL,
436         lpbDaclDefaulted: LPBOOL,
437     ) -> BOOL;
GetSecurityDescriptorGroup( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pGroup: *mut PSID, lpbGroupDefaulted: LPBOOL, ) -> BOOL438     pub fn GetSecurityDescriptorGroup(
439         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
440         pGroup: *mut PSID,
441         lpbGroupDefaulted: LPBOOL,
442     ) -> BOOL;
GetSecurityDescriptorLength( pSecurityDescriptor: PSECURITY_DESCRIPTOR ) -> DWORD443     pub fn GetSecurityDescriptorLength(
444         pSecurityDescriptor: PSECURITY_DESCRIPTOR
445     ) -> DWORD;
GetSecurityDescriptorOwner( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pOwner: *mut PSID, lpbOwnerDefaulted: LPBOOL, ) -> BOOL446     pub fn GetSecurityDescriptorOwner(
447         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
448         pOwner: *mut PSID,
449         lpbOwnerDefaulted: LPBOOL,
450     ) -> BOOL;
GetSecurityDescriptorRMControl( SecurityDescriptor: PSECURITY_DESCRIPTOR, RMControl: PUCHAR, ) -> DWORD451     pub fn GetSecurityDescriptorRMControl(
452         SecurityDescriptor: PSECURITY_DESCRIPTOR,
453         RMControl: PUCHAR,
454     ) -> DWORD;
GetSecurityDescriptorSacl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, lpbSaclPresent: LPBOOL, pSacl: *mut PACL, lpbSaclDefaulted: LPBOOL, ) -> BOOL455     pub fn GetSecurityDescriptorSacl(
456         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
457         lpbSaclPresent: LPBOOL,
458         pSacl: *mut PACL,
459         lpbSaclDefaulted: LPBOOL,
460     ) -> BOOL;
GetSidIdentifierAuthority( pSid: PSID, ) -> PSID_IDENTIFIER_AUTHORITY461     pub fn GetSidIdentifierAuthority(
462         pSid: PSID,
463     ) -> PSID_IDENTIFIER_AUTHORITY;
GetSidLengthRequired( nSubAuthorityCount: UCHAR, ) -> DWORD464     pub fn GetSidLengthRequired(
465         nSubAuthorityCount: UCHAR,
466     ) -> DWORD;
GetSidSubAuthority( pSid: PSID, nSubAuthority: DWORD, ) -> PDWORD467     pub fn GetSidSubAuthority(
468         pSid: PSID,
469         nSubAuthority: DWORD,
470     ) -> PDWORD;
GetSidSubAuthorityCount( pSid: PSID, ) -> PUCHAR471     pub fn GetSidSubAuthorityCount(
472         pSid: PSID,
473     ) -> PUCHAR;
GetTokenInformation( TokenHandle: HANDLE, TokenInformationClass: TOKEN_INFORMATION_CLASS, TokenInformation: LPVOID, TokenInformationLength: DWORD, ReturnLength: PDWORD, ) -> BOOL474     pub fn GetTokenInformation(
475         TokenHandle: HANDLE,
476         TokenInformationClass: TOKEN_INFORMATION_CLASS,
477         TokenInformation: LPVOID,
478         TokenInformationLength: DWORD,
479         ReturnLength: PDWORD,
480     ) -> BOOL;
GetWindowsAccountDomainSid( pSid: PSID, pDomainSid: PSID, cbDomainSid: *mut DWORD, ) -> BOOL481     pub fn GetWindowsAccountDomainSid(
482         pSid: PSID,
483         pDomainSid: PSID,
484         cbDomainSid: *mut DWORD,
485     ) -> BOOL;
ImpersonateAnonymousToken( ThreadHandle: HANDLE, ) -> BOOL486     pub fn ImpersonateAnonymousToken(
487         ThreadHandle: HANDLE,
488     ) -> BOOL;
ImpersonateLoggedOnUser( hToken: HANDLE, ) -> BOOL489     pub fn ImpersonateLoggedOnUser(
490         hToken: HANDLE,
491     ) -> BOOL;
ImpersonateSelf( ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL, ) -> BOOL492     pub fn ImpersonateSelf(
493         ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
494     ) -> BOOL;
InitializeAcl( pAcl: PACL, nAclLength: DWORD, dwAclRevision: DWORD, ) -> BOOL495     pub fn InitializeAcl(
496         pAcl: PACL,
497         nAclLength: DWORD,
498         dwAclRevision: DWORD,
499     ) -> BOOL;
InitializeSecurityDescriptor( pSecurityDescriptor: PSECURITY_DESCRIPTOR, dwRevision: DWORD, ) -> BOOL500     pub fn InitializeSecurityDescriptor(
501         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
502         dwRevision: DWORD,
503     ) -> BOOL;
InitializeSid( Sid: PSID, pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY, nSubAuthorityCount: BYTE, ) -> BOOL504     pub fn InitializeSid(
505         Sid: PSID,
506         pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY,
507         nSubAuthorityCount: BYTE,
508     ) -> BOOL;
IsTokenRestricted( TokenHandle: HANDLE, ) -> BOOL509     pub fn IsTokenRestricted(
510         TokenHandle: HANDLE,
511     ) -> BOOL;
IsValidAcl( pAcl: PACL, ) -> BOOL512     pub fn IsValidAcl(
513         pAcl: PACL,
514     ) -> BOOL;
IsValidSecurityDescriptor( pSecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> BOOL515     pub fn IsValidSecurityDescriptor(
516         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
517     ) -> BOOL;
IsValidSid( pSid: PSID, ) -> BOOL518     pub fn IsValidSid(
519         pSid: PSID,
520     ) -> BOOL;
IsWellKnownSid( pSid: PSID, WellKnownSidType: WELL_KNOWN_SID_TYPE, ) -> BOOL521     pub fn IsWellKnownSid(
522         pSid: PSID,
523         WellKnownSidType: WELL_KNOWN_SID_TYPE,
524     ) -> BOOL;
MakeAbsoluteSD( pSelfRelativeSD: PSECURITY_DESCRIPTOR, pAbsoluteSD: PSECURITY_DESCRIPTOR, lpdwAbsoluteSDSize: LPDWORD, pDacl: PACL, lpdwDaclSize: LPDWORD, pSacl: PACL, lpdwSaclSize: LPDWORD, pOwner: PSID, lpdwOwnerSize: LPDWORD, pPrimaryGroup: PSID, lpdwPrimaryGroupSize: LPDWORD, ) -> BOOL525     pub fn MakeAbsoluteSD(
526         pSelfRelativeSD: PSECURITY_DESCRIPTOR,
527         pAbsoluteSD: PSECURITY_DESCRIPTOR,
528         lpdwAbsoluteSDSize: LPDWORD,
529         pDacl: PACL,
530         lpdwDaclSize: LPDWORD,
531         pSacl: PACL,
532         lpdwSaclSize: LPDWORD,
533         pOwner: PSID,
534         lpdwOwnerSize: LPDWORD,
535         pPrimaryGroup: PSID,
536         lpdwPrimaryGroupSize: LPDWORD,
537     ) -> BOOL;
MakeSelfRelativeSD( pAbsoluteSD: PSECURITY_DESCRIPTOR, pSelfRelativeSD: PSECURITY_DESCRIPTOR, lpdwBufferLength: LPDWORD, ) -> BOOL538     pub fn MakeSelfRelativeSD(
539         pAbsoluteSD: PSECURITY_DESCRIPTOR,
540         pSelfRelativeSD: PSECURITY_DESCRIPTOR,
541         lpdwBufferLength: LPDWORD,
542     ) -> BOOL;
MapGenericMask( AccessMask: PDWORD, GenericMapping: PGENERIC_MAPPING, )543     pub fn MapGenericMask(
544         AccessMask: PDWORD,
545         GenericMapping: PGENERIC_MAPPING,
546     );
ObjectCloseAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: BOOL, ) -> BOOL547     pub fn ObjectCloseAuditAlarmW(
548         SubsystemName: LPCWSTR,
549         HandleId: LPVOID,
550         GenerateOnClose: BOOL,
551     ) -> BOOL;
ObjectDeleteAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: BOOL, ) -> BOOL552     pub fn ObjectDeleteAuditAlarmW(
553         SubsystemName: LPCWSTR,
554         HandleId: LPVOID,
555         GenerateOnClose: BOOL,
556     ) -> BOOL;
ObjectOpenAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, ObjectTypeName: LPWSTR, ObjectName: LPWSTR, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ClientToken: HANDLE, DesiredAccess: DWORD, GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET, ObjectCreation: BOOL, AccessGranted: BOOL, GenerateOnClose: LPBOOL, ) -> BOOL557     pub fn ObjectOpenAuditAlarmW(
558         SubsystemName: LPCWSTR,
559         HandleId: LPVOID,
560         ObjectTypeName: LPWSTR,
561         ObjectName: LPWSTR,
562         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
563         ClientToken: HANDLE,
564         DesiredAccess: DWORD,
565         GrantedAccess: DWORD,
566         Privileges: PPRIVILEGE_SET,
567         ObjectCreation: BOOL,
568         AccessGranted: BOOL,
569         GenerateOnClose: LPBOOL,
570     ) -> BOOL;
ObjectPrivilegeAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, ClientToken: HANDLE, DesiredAccess: DWORD, Privileges: PPRIVILEGE_SET, AccessGranted: BOOL, ) -> BOOL571     pub fn ObjectPrivilegeAuditAlarmW(
572         SubsystemName: LPCWSTR,
573         HandleId: LPVOID,
574         ClientToken: HANDLE,
575         DesiredAccess: DWORD,
576         Privileges: PPRIVILEGE_SET,
577         AccessGranted: BOOL,
578     ) -> BOOL;
PrivilegeCheck( ClientToken: HANDLE, RequiredPrivileges: PPRIVILEGE_SET, pfResult: LPBOOL, ) -> BOOL579     pub fn PrivilegeCheck(
580         ClientToken: HANDLE,
581         RequiredPrivileges: PPRIVILEGE_SET,
582         pfResult: LPBOOL,
583     ) -> BOOL;
PrivilegedServiceAuditAlarmW( SubsystemName: LPCWSTR, ServiceName: LPCWSTR, ClientToken: HANDLE, Privileges: PPRIVILEGE_SET, AccessGranted: BOOL, ) -> BOOL584     pub fn PrivilegedServiceAuditAlarmW(
585         SubsystemName: LPCWSTR,
586         ServiceName: LPCWSTR,
587         ClientToken: HANDLE,
588         Privileges: PPRIVILEGE_SET,
589         AccessGranted: BOOL,
590     ) -> BOOL;
QuerySecurityAccessMask( SecurityInformation: SECURITY_INFORMATION, DesiredAccess: LPDWORD, )591     pub fn QuerySecurityAccessMask(
592         SecurityInformation: SECURITY_INFORMATION,
593         DesiredAccess: LPDWORD,
594     );
RevertToSelf() -> BOOL595     pub fn RevertToSelf() -> BOOL;
SetAclInformation( pAcl: PACL, pAclInformation: LPVOID, nAclInformationLength: DWORD, dwAclInfomrationClass: ACL_INFORMATION_CLASS, ) -> BOOL596     pub fn SetAclInformation(
597         pAcl: PACL,
598         pAclInformation: LPVOID,
599         nAclInformationLength: DWORD,
600         dwAclInfomrationClass: ACL_INFORMATION_CLASS,
601     ) -> BOOL;
SetFileSecurityW( lpFileName: LPCWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> BOOL602     pub fn SetFileSecurityW(
603         lpFileName: LPCWSTR,
604         SecurityInformation: SECURITY_INFORMATION,
605         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
606     ) -> BOOL;
SetKernelObjectSecurity( Handle: HANDLE, SecurityInformation: SECURITY_INFORMATION, SecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> BOOL607     pub fn SetKernelObjectSecurity(
608         Handle: HANDLE,
609         SecurityInformation: SECURITY_INFORMATION,
610         SecurityDescriptor: PSECURITY_DESCRIPTOR,
611     ) -> BOOL;
SetPrivateObjectSecurity( SecurityInformation: SECURITY_INFORMATION, ModificationDescriptor: PSECURITY_DESCRIPTOR, ObjectsSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, GenericMapping: PGENERIC_MAPPING, Token: HANDLE, ) -> BOOL612     pub fn SetPrivateObjectSecurity(
613         SecurityInformation: SECURITY_INFORMATION,
614         ModificationDescriptor: PSECURITY_DESCRIPTOR,
615         ObjectsSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
616         GenericMapping: PGENERIC_MAPPING,
617         Token: HANDLE,
618     ) -> BOOL;
SetPrivateObjectSecurityEx( SecurityInformation: SECURITY_INFORMATION, ModificationDescriptor: PSECURITY_DESCRIPTOR, ObjectsSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, AutoInheritFlags: ULONG, GenericMapping: PGENERIC_MAPPING, Token: HANDLE, ) -> BOOL619     pub fn SetPrivateObjectSecurityEx(
620         SecurityInformation: SECURITY_INFORMATION,
621         ModificationDescriptor: PSECURITY_DESCRIPTOR,
622         ObjectsSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
623         AutoInheritFlags: ULONG,
624         GenericMapping: PGENERIC_MAPPING,
625         Token: HANDLE,
626     ) -> BOOL;
SetSecurityAccessMask( SecurityInformation: SECURITY_INFORMATION, DesiredAccess: LPDWORD, )627     pub fn SetSecurityAccessMask(
628         SecurityInformation: SECURITY_INFORMATION,
629         DesiredAccess: LPDWORD,
630     );
SetSecurityDescriptorControl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, ControlBitsOfInterest: SECURITY_DESCRIPTOR_CONTROL, ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL, ) -> BOOL631     pub fn SetSecurityDescriptorControl(
632         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
633         ControlBitsOfInterest: SECURITY_DESCRIPTOR_CONTROL,
634         ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL,
635     ) -> BOOL;
SetSecurityDescriptorDacl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, bDaclPresent: BOOL, pDacl: PACL, bDaclDefaulted: BOOL, ) -> BOOL636     pub fn SetSecurityDescriptorDacl(
637         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
638         bDaclPresent: BOOL,
639         pDacl: PACL,
640         bDaclDefaulted: BOOL,
641     ) -> BOOL;
SetSecurityDescriptorGroup( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pGroup: PSID, bGroupDefaulted: BOOL, ) -> BOOL642     pub fn SetSecurityDescriptorGroup(
643         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
644         pGroup: PSID,
645         bGroupDefaulted: BOOL,
646     ) -> BOOL;
SetSecurityDescriptorOwner( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pOwner: PSID, bOwnerDefaulted: BOOL, ) -> BOOL647     pub fn SetSecurityDescriptorOwner(
648         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
649         pOwner: PSID,
650         bOwnerDefaulted: BOOL,
651     ) -> BOOL;
SetSecurityDescriptorRMControl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, RMControl: PUCHAR, ) -> DWORD652     pub fn SetSecurityDescriptorRMControl(
653         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
654         RMControl: PUCHAR,
655     ) -> DWORD;
SetSecurityDescriptorSacl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, bSaclPresent: BOOL, pSacl: PACL, bSaclDefaulted: BOOL, ) -> BOOL656     pub fn SetSecurityDescriptorSacl(
657         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
658         bSaclPresent: BOOL,
659         pSacl: PACL,
660         bSaclDefaulted: BOOL,
661     ) -> BOOL;
SetTokenInformation( TokenHandle: HANDLE, TokenInformationClass: TOKEN_INFORMATION_CLASS, TokenInformation: LPVOID, TokenInformationLength: DWORD, ) -> BOOL662     pub fn SetTokenInformation(
663         TokenHandle: HANDLE,
664         TokenInformationClass: TOKEN_INFORMATION_CLASS,
665         TokenInformation: LPVOID,
666         TokenInformationLength: DWORD,
667     ) -> BOOL;
SetCachedSigningLevel( SourceFiles: PHANDLE, SourceFileCount: ULONG, Flags: ULONG, TargetFile: HANDLE, ) -> BOOL668     pub fn SetCachedSigningLevel(
669         SourceFiles: PHANDLE,
670         SourceFileCount: ULONG,
671         Flags: ULONG,
672         TargetFile: HANDLE,
673     ) -> BOOL;
GetCachedSigningLevel( File: HANDLE, Flags: PULONG, SigningLevel: PULONG, Thumbprint: PUCHAR, ThumbprintSize: PULONG, ThumbprintAlgorithm: PULONG, ) -> BOOL674     pub fn GetCachedSigningLevel(
675         File: HANDLE,
676         Flags: PULONG,
677         SigningLevel: PULONG,
678         Thumbprint: PUCHAR,
679         ThumbprintSize: PULONG,
680         ThumbprintAlgorithm: PULONG,
681     ) -> BOOL;
CveEventWrite( CveId: PCWSTR, AdditionalDetails: PCWSTR, ) -> LONG682     pub fn CveEventWrite(
683         CveId: PCWSTR,
684         AdditionalDetails: PCWSTR,
685     ) -> LONG;
DeriveCapabilitySidsFromName( CapName: LPCWSTR, CapabilityGroupSids: *mut *mut PSID, CapabilityGroupSidCount: *mut DWORD, CapabilitySids: *mut *mut PSID, CapabilitySidCount: *mut DWORD, ) -> BOOL686     pub fn DeriveCapabilitySidsFromName(
687         CapName: LPCWSTR,
688         CapabilityGroupSids: *mut *mut PSID,
689         CapabilityGroupSidCount: *mut DWORD,
690         CapabilitySids: *mut *mut PSID,
691         CapabilitySidCount: *mut DWORD,
692     ) -> BOOL;
693 }
694