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 use shared::guiddef::GUID;
9 use shared::minwindef::{
10     BOOL, BYTE, DWORD, LPBOOL, LPDWORD, LPVOID, PBOOL, PDWORD, PUCHAR, PULONG, UCHAR, ULONG
11 };
12 use um::minwinbase::LPSECURITY_ATTRIBUTES;
13 use um::winnt::{
14     ACL_INFORMATION_CLASS, AUDIT_EVENT_TYPE, BOOLEAN, HANDLE, LONG, LPCWSTR, LPWSTR, PACL,
15     PCLAIM_SECURITY_ATTRIBUTES_INFORMATION, PCWSTR, PGENERIC_MAPPING, PHANDLE, PLUID,
16     PLUID_AND_ATTRIBUTES, POBJECT_TYPE_LIST, PPRIVILEGE_SET, PSECURITY_DESCRIPTOR,
17     PSECURITY_DESCRIPTOR_CONTROL, PSID, PSID_AND_ATTRIBUTES, PSID_IDENTIFIER_AUTHORITY,
18     PTOKEN_GROUPS, PTOKEN_PRIVILEGES, PVOID, SECURITY_DESCRIPTOR_CONTROL,
19     SECURITY_IMPERSONATION_LEVEL, SECURITY_INFORMATION, TOKEN_INFORMATION_CLASS, TOKEN_TYPE,
20     WELL_KNOWN_SID_TYPE
21 };
22 extern "system" {
AccessCheck( pSecurityDescriptor: PSECURITY_DESCRIPTOR, ClientToken: HANDLE, DesiredAccess: DWORD, GenericMapping: PGENERIC_MAPPING, PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD, GrantedAccess: LPDWORD, AccessStatus: LPBOOL, ) -> BOOL23     pub fn AccessCheck(
24         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
25         ClientToken: HANDLE,
26         DesiredAccess: DWORD,
27         GenericMapping: PGENERIC_MAPPING,
28         PrivilegeSet: PPRIVILEGE_SET,
29         PrivilegeSetLength: LPDWORD,
30         GrantedAccess: LPDWORD,
31         AccessStatus: LPBOOL,
32     ) -> 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, ) -> BOOL33     pub fn AccessCheckAndAuditAlarmW(
34         SubsystemName: LPCWSTR,
35         HandleId: LPVOID,
36         ObjectTypeName: LPWSTR,
37         ObjectName: LPWSTR,
38         SecurityDescriptor: PSECURITY_DESCRIPTOR,
39         DesiredAccess: DWORD,
40         GenericMapping: PGENERIC_MAPPING,
41         ObjectCreation: BOOL,
42         GrantedAccess: LPDWORD,
43         AccessStatus: LPBOOL,
44         pfGenerateOnClose: LPBOOL,
45     ) -> 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, ) -> BOOL46     pub fn AccessCheckByType(
47         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
48         PrincipalSelfSid: PSID,
49         ClientToken: HANDLE,
50         DesiredAccess: DWORD,
51         ObjectTypeList: POBJECT_TYPE_LIST,
52         ObjectTypeListLength: DWORD,
53         GenericMapping: PGENERIC_MAPPING,
54         PrivilegeSet: PPRIVILEGE_SET,
55         PrivilegeSetLength: LPDWORD,
56         GrantedAccess: LPDWORD,
57         AccessStatus: LPBOOL,
58     ) -> 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, ) -> BOOL59     pub fn AccessCheckByTypeResultList(
60         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
61         PrincipalSelfSid: PSID,
62         ClientToken: HANDLE,
63         DesiredAccess: DWORD,
64         ObjectTypeList: POBJECT_TYPE_LIST,
65         ObjectTypeListLength: DWORD,
66         GenericMapping: PGENERIC_MAPPING,
67         PrivilegeSet: PPRIVILEGE_SET,
68         PrivilegeSetLength: LPDWORD,
69         GrantedAccessList: LPDWORD,
70         AccessStatusList: LPDWORD,
71         ) -> 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, ) -> BOOL72     pub fn AccessCheckByTypeAndAuditAlarmW(
73         SubsystemName: LPCWSTR,
74         HandleId: LPVOID,
75         ObjectTypeName: LPWSTR,
76         ObjectName: LPCWSTR,
77         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
78         PrincipalSelfSid: PSID,
79         DesiredAccess: DWORD,
80         AuditType: AUDIT_EVENT_TYPE,
81         Flags: DWORD,
82         ObjectTypeList: POBJECT_TYPE_LIST,
83         ObjectTypeListLength: DWORD,
84         GenericMapping: PGENERIC_MAPPING,
85         ObjectCreation: BOOL,
86         GrantedAccess: LPDWORD,
87         AccessStatus: LPBOOL,
88         pfGenerateOnClose: LPBOOL,
89     ) -> 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, ) -> BOOL90     pub fn AccessCheckByTypeResultListAndAuditAlarmW(
91         SubsystemName: LPCWSTR,
92         HandleId: LPVOID,
93         ObjectTypeName: LPCWSTR,
94         ObjectName: LPCWSTR,
95         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
96         PrincipalSelfSid: PSID,
97         DesiredAccess: DWORD,
98         AuditType: AUDIT_EVENT_TYPE,
99         Flags: DWORD,
100         ObjectTypeList: POBJECT_TYPE_LIST,
101         ObjectTypeListLength: DWORD,
102         GenericMapping: PGENERIC_MAPPING,
103         ObjectCreation: BOOL,
104         GrantedAccess: LPDWORD,
105         AccessStatusList: LPDWORD,
106         pfGenerateOnClose: LPBOOL,
107     ) -> 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, ) -> BOOL108     pub fn AccessCheckByTypeResultListAndAuditAlarmByHandleW(
109         SubsystemName: LPCWSTR,
110         HandleId: LPVOID,
111         ClientToken: HANDLE,
112         ObjectTypeName: LPCWSTR,
113         ObjectName: LPCWSTR,
114         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
115         PrincipalSelfSid: PSID,
116         DesiredAccess: DWORD,
117         AuditType: AUDIT_EVENT_TYPE,
118         Flags: DWORD,
119         ObjectTypeList: POBJECT_TYPE_LIST,
120         ObjectTypeListLength: DWORD,
121         GenericMapping: PGENERIC_MAPPING,
122         ObjectCreation: BOOL,
123         GrantedAccess: LPDWORD,
124         AccessStatusList: LPDWORD,
125         pfGenerateOnClose: LPBOOL,
126     ) -> BOOL;
AddAccessAllowedAce( pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL127     pub fn AddAccessAllowedAce(
128         pAcl: PACL,
129         dwAceRevision: DWORD,
130         AccessMask: DWORD,
131         pSid: PSID,
132     ) -> BOOL;
AddAccessAllowedAceEx( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL133     pub fn AddAccessAllowedAceEx(
134         pAcl: PACL,
135         dwAceRevision: DWORD,
136         AceFlags: DWORD,
137         AccessMask: DWORD,
138         pSid: PSID,
139     ) -> BOOL;
AddAccessAllowedObjectAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: *mut GUID, InheritedObjectTypeGuid: *mut GUID, pSid: PSID, ) -> BOOL140     pub fn AddAccessAllowedObjectAce(
141         pAcl: PACL,
142         dwAceRevision: DWORD,
143         AceFlags: DWORD,
144         AccessMask: DWORD,
145         ObjectTypeGuid: *mut GUID,
146         InheritedObjectTypeGuid: *mut GUID,
147         pSid: PSID,
148     ) -> BOOL;
AddAccessDeniedAce( pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL149     pub fn AddAccessDeniedAce(
150         pAcl: PACL,
151         dwAceRevision: DWORD,
152         AccessMask: DWORD,
153         pSid: PSID,
154     ) -> BOOL;
AddAccessDeniedAceEx( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL155     pub fn AddAccessDeniedAceEx(
156         pAcl: PACL,
157         dwAceRevision: DWORD,
158         AceFlags: DWORD,
159         AccessMask: DWORD,
160         pSid: PSID,
161     ) -> BOOL;
AddAccessDeniedObjectAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: *mut GUID, InheritedObjectTypeGuid: *mut GUID, pSid: PSID, ) -> BOOL162     pub fn AddAccessDeniedObjectAce(
163         pAcl: PACL,
164         dwAceRevision: DWORD,
165         AceFlags: DWORD,
166         AccessMask: DWORD,
167         ObjectTypeGuid: *mut GUID,
168         InheritedObjectTypeGuid: *mut GUID,
169         pSid: PSID,
170     ) -> BOOL;
AddAce( pAcl: PACL, dwAceRevision: DWORD, dwStartingAceIndex: DWORD, pAceList: LPVOID, nAceListLength: DWORD, ) -> BOOL171     pub fn AddAce(
172         pAcl: PACL,
173         dwAceRevision: DWORD,
174         dwStartingAceIndex: DWORD,
175         pAceList: LPVOID,
176         nAceListLength: DWORD,
177     ) -> BOOL;
AddAuditAccessAce( pAcl: PACL, dwAceRevision: DWORD, dwAccessMask: DWORD, pSid: PSID, bAuditSuccess: BOOL, bAuditFailure: BOOL, ) -> BOOL178     pub fn AddAuditAccessAce(
179         pAcl: PACL,
180         dwAceRevision: DWORD,
181         dwAccessMask: DWORD,
182         pSid: PSID,
183         bAuditSuccess: BOOL,
184         bAuditFailure: BOOL,
185     ) -> BOOL;
AddAuditAccessAceEx( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, dwAccessMask: DWORD, pSid: PSID, bAuditSuccess: BOOL, bAuditFailure: BOOL, ) -> BOOL186     pub fn AddAuditAccessAceEx(
187         pAcl: PACL,
188         dwAceRevision: DWORD,
189         AceFlags: DWORD,
190         dwAccessMask: DWORD,
191         pSid: PSID,
192         bAuditSuccess: BOOL,
193         bAuditFailure: BOOL,
194     ) -> BOOL;
AddAuditAccessObjectAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, ObjectTypeGuid: *mut GUID, InheritedObjectTypeGuid: *mut GUID, pSid: PSID, bAuditSuccess: BOOL, bAuditFailure: BOOL, ) -> BOOL195     pub fn AddAuditAccessObjectAce(
196         pAcl: PACL,
197         dwAceRevision: DWORD,
198         AceFlags: DWORD,
199         AccessMask: DWORD,
200         ObjectTypeGuid: *mut GUID,
201         InheritedObjectTypeGuid: *mut GUID,
202         pSid: PSID,
203         bAuditSuccess: BOOL,
204         bAuditFailure: BOOL,
205     ) -> BOOL;
AddMandatoryAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, MandatoryPolicy: DWORD, pLabelSid: PSID, ) -> BOOL206     pub fn AddMandatoryAce(
207         pAcl: PACL,
208         dwAceRevision: DWORD,
209         AceFlags: DWORD,
210         MandatoryPolicy: DWORD,
211         pLabelSid: PSID,
212     ) -> BOOL;
AddResourceAttributeAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, pAttributeInfo: PCLAIM_SECURITY_ATTRIBUTES_INFORMATION, pReturnLength: PDWORD, ) -> BOOL213     pub fn AddResourceAttributeAce(
214         pAcl: PACL,
215         dwAceRevision: DWORD,
216         AceFlags: DWORD,
217         AccessMask: DWORD,
218         pSid: PSID,
219         pAttributeInfo: PCLAIM_SECURITY_ATTRIBUTES_INFORMATION,
220         pReturnLength: PDWORD,
221     ) -> BOOL;
AddScopedPolicyIDAce( pAcl: PACL, dwAceRevision: DWORD, AceFlags: DWORD, AccessMask: DWORD, pSid: PSID, ) -> BOOL222     pub fn AddScopedPolicyIDAce(
223         pAcl: PACL,
224         dwAceRevision: DWORD,
225         AceFlags: DWORD,
226         AccessMask: DWORD,
227         pSid: PSID,
228     ) -> BOOL;
AdjustTokenGroups( TokenHandle: HANDLE, ResetToDefault: BOOL, NewState: PTOKEN_GROUPS, BufferLength: DWORD, PreviousState: PTOKEN_GROUPS, ReturnLength: PDWORD, ) -> BOOL229     pub fn AdjustTokenGroups(
230         TokenHandle: HANDLE,
231         ResetToDefault: BOOL,
232         NewState: PTOKEN_GROUPS,
233         BufferLength: DWORD,
234         PreviousState: PTOKEN_GROUPS,
235         ReturnLength: PDWORD,
236     ) -> BOOL;
AdjustTokenPrivileges( TokenHandle: HANDLE, DisableAllPrivileges: BOOL, NewState: PTOKEN_PRIVILEGES, BufferLength: DWORD, PreviousState: PTOKEN_PRIVILEGES, ReturnLength: PDWORD, ) -> BOOL237     pub fn AdjustTokenPrivileges(
238         TokenHandle: HANDLE,
239         DisableAllPrivileges: BOOL,
240         NewState: PTOKEN_PRIVILEGES,
241         BufferLength: DWORD,
242         PreviousState: PTOKEN_PRIVILEGES,
243         ReturnLength: PDWORD,
244     ) -> 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, ) -> BOOL245     pub fn AllocateAndInitializeSid(
246         pIdentifierAuthoirity: PSID_IDENTIFIER_AUTHORITY,
247         nSubAuthorityCount: BYTE,
248         dwSubAuthority0: DWORD,
249         dwSubAuthority1: DWORD,
250         dwSubAuthority2: DWORD,
251         dwSubAuthority3: DWORD,
252         dwSubAuthority4: DWORD,
253         dwSubAuthority5: DWORD,
254         dwSubAuthority6: DWORD,
255         dwSubAuthority7: DWORD,
256         pSid: *mut PSID,
257     ) -> BOOL;
AllocateLocallyUniqueId( Luid: PLUID, ) -> BOOL258     pub fn AllocateLocallyUniqueId(
259         Luid: PLUID,
260     ) -> BOOL;
AreAllAccessesGranted( GrantedAccess: DWORD, DesiredAccess: DWORD, ) -> BOOL261     pub fn AreAllAccessesGranted(
262         GrantedAccess: DWORD,
263         DesiredAccess: DWORD,
264     ) -> BOOL;
AreAnyAccessesGranted( GrantedAccess: DWORD, DesiredAccess: DWORD, ) -> BOOL265     pub fn AreAnyAccessesGranted(
266         GrantedAccess: DWORD,
267         DesiredAccess: DWORD,
268     ) -> BOOL;
CheckTokenMembership( TokenHandle: HANDLE, SidToCheck: PSID, IsMember: PBOOL, ) -> BOOL269     pub fn CheckTokenMembership(
270         TokenHandle: HANDLE,
271         SidToCheck: PSID,
272         IsMember: PBOOL,
273     ) -> BOOL;
CheckTokenCapability( TokenHandle: HANDLE, CapabilitySidToCheck: PSID, HasCapability: PBOOL, ) -> BOOL274     pub fn CheckTokenCapability(
275         TokenHandle: HANDLE,
276         CapabilitySidToCheck: PSID,
277         HasCapability: PBOOL,
278     ) -> BOOL;
GetAppContainerAce( Acl: PACL, StartingAceIndex: DWORD, AppContainerAce: *mut PVOID, AppContainerAceIndex: *mut DWORD, ) -> BOOL279     pub fn GetAppContainerAce(
280         Acl: PACL,
281         StartingAceIndex: DWORD,
282         AppContainerAce: *mut PVOID,
283         AppContainerAceIndex: *mut DWORD,
284     ) -> BOOL;
CheckTokenMembershipEx( TokenHandle: HANDLE, SidToCheck: PSID, Flags: DWORD, IsMember: PBOOL, ) -> BOOL285     pub fn CheckTokenMembershipEx(
286         TokenHandle: HANDLE,
287         SidToCheck: PSID,
288         Flags: DWORD,
289         IsMember: PBOOL,
290     ) -> BOOL;
ConvertToAutoInheritPrivateObjectSecurity( ParentDescriptor: PSECURITY_DESCRIPTOR, CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR, NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, ObjectType: *mut GUID, IsDirectoryObject: BOOLEAN, GenericMapping: PGENERIC_MAPPING, ) -> BOOL291     pub fn ConvertToAutoInheritPrivateObjectSecurity(
292         ParentDescriptor: PSECURITY_DESCRIPTOR,
293         CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR,
294         NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
295         ObjectType: *mut GUID,
296         IsDirectoryObject: BOOLEAN,
297         GenericMapping: PGENERIC_MAPPING,
298     ) -> BOOL;
CopySid( nDestinationSidLength: DWORD, pDestinationSid: PSID, pSourceSid: PSID, ) -> BOOL299     pub fn CopySid(
300         nDestinationSidLength: DWORD,
301         pDestinationSid: PSID,
302         pSourceSid: PSID,
303     ) -> BOOL;
CreatePrivateObjectSecurity( ParentDescriptor: PSECURITY_DESCRIPTOR, CreatorDescriptor: PSECURITY_DESCRIPTOR, NewDescriptor: *mut PSECURITY_DESCRIPTOR, IsDirectoryObject: BOOL, Token: HANDLE, GenericMapping: PGENERIC_MAPPING, ) -> BOOL304     pub fn CreatePrivateObjectSecurity(
305         ParentDescriptor: PSECURITY_DESCRIPTOR,
306         CreatorDescriptor: PSECURITY_DESCRIPTOR,
307         NewDescriptor: *mut PSECURITY_DESCRIPTOR,
308         IsDirectoryObject: BOOL,
309         Token: HANDLE,
310         GenericMapping: PGENERIC_MAPPING,
311     ) -> BOOL;
CreatePrivateObjectSecurityEx( ParentDescriptor: PSECURITY_DESCRIPTOR, CreatorDescriptor: PSECURITY_DESCRIPTOR, NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, ObjectType: *mut GUID, IsContainerObject: BOOL, AutoInheritFlags: ULONG, Token: HANDLE, GenericMapping: PGENERIC_MAPPING, ) -> BOOL312     pub fn CreatePrivateObjectSecurityEx(
313         ParentDescriptor: PSECURITY_DESCRIPTOR,
314         CreatorDescriptor: PSECURITY_DESCRIPTOR,
315         NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
316         ObjectType: *mut GUID,
317         IsContainerObject: BOOL,
318         AutoInheritFlags: ULONG,
319         Token: HANDLE,
320         GenericMapping: PGENERIC_MAPPING,
321     ) -> 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, ) -> BOOL322     pub fn CreatePrivateObjectSecurityWithMultipleInheritance(
323         ParentDescriptor: PSECURITY_DESCRIPTOR,
324         CreatorDescriptor: PSECURITY_DESCRIPTOR,
325         NewSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
326         ObjectTypes: *mut *mut GUID,
327         GuidCount: ULONG,
328         IsContainerObject: BOOL,
329         AutoInheritFlags: ULONG,
330         Token: HANDLE,
331         GenericMapping: PGENERIC_MAPPING,
332     ) -> 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, ) -> BOOL333     pub fn CreateRestrictedToken(
334         ExistingTokenHandle: HANDLE,
335         Flags: DWORD,
336         DisableSidCount: DWORD,
337         SidsToDisable: PSID_AND_ATTRIBUTES,
338         DeletePrivilegeCount: DWORD,
339         PrivilegesToDelete: PLUID_AND_ATTRIBUTES,
340         RestrictedSidCount: DWORD,
341         SidsToRestrict: PSID_AND_ATTRIBUTES,
342         NewTokenHandle: PHANDLE,
343     ) -> BOOL;
CreateWellKnownSid( WellKnownSidType: WELL_KNOWN_SID_TYPE, DomainSid: PSID, pSid: PSID, cbSid: *mut DWORD, ) -> BOOL344     pub fn CreateWellKnownSid(
345         WellKnownSidType: WELL_KNOWN_SID_TYPE,
346         DomainSid: PSID,
347         pSid: PSID,
348         cbSid: *mut DWORD,
349     ) -> BOOL;
EqualDomainSid( pSid1: PSID, pSid2: PSID, pfEqual: *mut BOOL, ) -> BOOL350     pub fn EqualDomainSid(
351         pSid1: PSID,
352         pSid2: PSID,
353         pfEqual: *mut BOOL,
354     ) -> BOOL;
DeleteAce( pAcl: PACL, dwAceIndex: DWORD, ) -> BOOL355     pub fn DeleteAce(
356         pAcl: PACL,
357         dwAceIndex: DWORD,
358     ) -> BOOL;
DestroyPrivateObjectSecurity( ObjectDescriptor: *mut PSECURITY_DESCRIPTOR, ) -> BOOL359     pub fn DestroyPrivateObjectSecurity(
360         ObjectDescriptor: *mut PSECURITY_DESCRIPTOR,
361     ) -> BOOL;
DuplicateToken( ExistingTokenHandle: HANDLE, ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL, DuplicateTokenHandle: PHANDLE, ) -> BOOL362     pub fn DuplicateToken(
363         ExistingTokenHandle: HANDLE,
364         ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
365         DuplicateTokenHandle: PHANDLE,
366     ) -> BOOL;
DuplicateTokenEx( hExistingToken: HANDLE, dwDesiredAccess: DWORD, lpTokenAttributes: LPSECURITY_ATTRIBUTES, ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL, TokenType: TOKEN_TYPE, phNewToken: PHANDLE, ) -> BOOL367     pub fn DuplicateTokenEx(
368         hExistingToken: HANDLE,
369         dwDesiredAccess: DWORD,
370         lpTokenAttributes: LPSECURITY_ATTRIBUTES,
371         ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
372         TokenType: TOKEN_TYPE,
373         phNewToken: PHANDLE,
374     ) -> BOOL;
EqualPrefixSid( pSid1: PSID, pSid2: PSID, ) -> BOOL375     pub fn EqualPrefixSid(
376         pSid1: PSID,
377         pSid2: PSID,
378     ) -> BOOL;
EqualSid( pSid1: PSID, pSid2: PSID, ) -> BOOL379     pub fn EqualSid(
380         pSid1: PSID,
381         pSid2: PSID,
382     ) -> BOOL;
FindFirstFreeAce( pAcl: PACL, pAce: *mut LPVOID, ) -> BOOL383     pub fn FindFirstFreeAce(
384         pAcl: PACL,
385         pAce: *mut LPVOID,
386     ) -> BOOL;
FreeSid( pSid: PSID ) -> PVOID387     pub fn FreeSid(
388         pSid: PSID
389     ) -> PVOID;
GetAce( pAcl: PACL, dwAceIndex: DWORD, pAce: *mut LPVOID, ) -> BOOL390     pub fn GetAce(
391         pAcl: PACL,
392         dwAceIndex: DWORD,
393         pAce: *mut LPVOID,
394     ) -> BOOL;
GetAclInformation( pAcl: PACL, pAclInformtion: LPVOID, nAclInformationLength: DWORD, dwAclInformationClass: ACL_INFORMATION_CLASS, ) -> BOOL395     pub fn GetAclInformation(
396         pAcl: PACL,
397         pAclInformtion: LPVOID,
398         nAclInformationLength: DWORD,
399         dwAclInformationClass: ACL_INFORMATION_CLASS,
400     ) -> BOOL;
GetFileSecurityW( lpFileName: LPCWSTR, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL401     pub fn GetFileSecurityW(
402         lpFileName: LPCWSTR,
403         RequestedInformation: SECURITY_INFORMATION,
404         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
405         nLength: DWORD,
406         lpnLengthNeeded: LPDWORD,
407     ) -> BOOL;
GetKernelObjectSecurity( Handle: HANDLE, RequestedInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL408     pub fn GetKernelObjectSecurity(
409         Handle: HANDLE,
410         RequestedInformation: SECURITY_INFORMATION,
411         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
412         nLength: DWORD,
413         lpnLengthNeeded: LPDWORD,
414     ) -> BOOL;
GetLengthSid( pSid: PSID, ) -> DWORD415     pub fn GetLengthSid(
416         pSid: PSID,
417     ) -> DWORD;
GetPrivateObjectSecurity( ObjectDescriptor: PSECURITY_DESCRIPTOR, SecurityInformation: SECURITY_INFORMATION, ResultantDescriptor: PSECURITY_DESCRIPTOR, DescriptorLength: DWORD, ReturnLength: PDWORD, ) -> BOOL418     pub fn GetPrivateObjectSecurity(
419         ObjectDescriptor: PSECURITY_DESCRIPTOR,
420         SecurityInformation: SECURITY_INFORMATION,
421         ResultantDescriptor: PSECURITY_DESCRIPTOR,
422         DescriptorLength: DWORD,
423         ReturnLength: PDWORD,
424     ) -> BOOL;
GetSecurityDescriptorControl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pControl: PSECURITY_DESCRIPTOR_CONTROL, lpdwRevision: LPDWORD, ) -> BOOL425     pub fn GetSecurityDescriptorControl(
426         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
427         pControl: PSECURITY_DESCRIPTOR_CONTROL,
428         lpdwRevision: LPDWORD,
429     ) -> BOOL;
GetSecurityDescriptorDacl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, lpbDaclPresent: LPBOOL, pDacl: *mut PACL, lpbDaclDefaulted: LPBOOL, ) -> BOOL430     pub fn GetSecurityDescriptorDacl(
431         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
432         lpbDaclPresent: LPBOOL,
433         pDacl: *mut PACL,
434         lpbDaclDefaulted: LPBOOL,
435     ) -> BOOL;
GetSecurityDescriptorGroup( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pGroup: *mut PSID, lpbGroupDefaulted: LPBOOL, ) -> BOOL436     pub fn GetSecurityDescriptorGroup(
437         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
438         pGroup: *mut PSID,
439         lpbGroupDefaulted: LPBOOL,
440     ) -> BOOL;
GetSecurityDescriptorLength( pSecurityDescriptor: PSECURITY_DESCRIPTOR ) -> DWORD441     pub fn GetSecurityDescriptorLength(
442         pSecurityDescriptor: PSECURITY_DESCRIPTOR
443     ) -> DWORD;
GetSecurityDescriptorOwner( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pOwner: *mut PSID, lpbOwnerDefaulted: LPBOOL, ) -> BOOL444     pub fn GetSecurityDescriptorOwner(
445         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
446         pOwner: *mut PSID,
447         lpbOwnerDefaulted: LPBOOL,
448     ) -> BOOL;
GetSecurityDescriptorRMControl( SecurityDescriptor: PSECURITY_DESCRIPTOR, RMControl: PUCHAR, ) -> DWORD449     pub fn GetSecurityDescriptorRMControl(
450         SecurityDescriptor: PSECURITY_DESCRIPTOR,
451         RMControl: PUCHAR,
452     ) -> DWORD;
GetSecurityDescriptorSacl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, lpbSaclPresent: LPBOOL, pSacl: *mut PACL, lpbSaclDefaulted: LPBOOL, ) -> BOOL453     pub fn GetSecurityDescriptorSacl(
454         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
455         lpbSaclPresent: LPBOOL,
456         pSacl: *mut PACL,
457         lpbSaclDefaulted: LPBOOL,
458     ) -> BOOL;
GetSidIdentifierAuthority( pSid: PSID, ) -> PSID_IDENTIFIER_AUTHORITY459     pub fn GetSidIdentifierAuthority(
460         pSid: PSID,
461     ) -> PSID_IDENTIFIER_AUTHORITY;
GetSidLengthRequired( nSubAuthorityCount: UCHAR, ) -> DWORD462     pub fn GetSidLengthRequired(
463         nSubAuthorityCount: UCHAR,
464     ) -> DWORD;
GetSidSubAuthority( pSid: PSID, nSubAuthority: DWORD, ) -> PDWORD465     pub fn GetSidSubAuthority(
466         pSid: PSID,
467         nSubAuthority: DWORD,
468     ) -> PDWORD;
GetSidSubAuthorityCount( pSid: PSID, ) -> PUCHAR469     pub fn GetSidSubAuthorityCount(
470         pSid: PSID,
471     ) -> PUCHAR;
GetTokenInformation( TokenHandle: HANDLE, TokenInformationClass: TOKEN_INFORMATION_CLASS, TokenInformation: LPVOID, TokenInformationLength: DWORD, ReturnLength: PDWORD, ) -> BOOL472     pub fn GetTokenInformation(
473         TokenHandle: HANDLE,
474         TokenInformationClass: TOKEN_INFORMATION_CLASS,
475         TokenInformation: LPVOID,
476         TokenInformationLength: DWORD,
477         ReturnLength: PDWORD,
478     ) -> BOOL;
GetWindowsAccountDomainSid( pSid: PSID, pDomainSid: PSID, cbDomainSid: *mut DWORD, ) -> BOOL479     pub fn GetWindowsAccountDomainSid(
480         pSid: PSID,
481         pDomainSid: PSID,
482         cbDomainSid: *mut DWORD,
483     ) -> BOOL;
ImpersonateAnonymousToken( ThreadHandle: HANDLE, ) -> BOOL484     pub fn ImpersonateAnonymousToken(
485         ThreadHandle: HANDLE,
486     ) -> BOOL;
ImpersonateLoggedOnUser( hToken: HANDLE, ) -> BOOL487     pub fn ImpersonateLoggedOnUser(
488         hToken: HANDLE,
489     ) -> BOOL;
ImpersonateSelf( ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL, ) -> BOOL490     pub fn ImpersonateSelf(
491         ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
492     ) -> BOOL;
InitializeAcl( pAcl: PACL, nAclLength: DWORD, dwAclRevision: DWORD, ) -> BOOL493     pub fn InitializeAcl(
494         pAcl: PACL,
495         nAclLength: DWORD,
496         dwAclRevision: DWORD,
497     ) -> BOOL;
InitializeSecurityDescriptor( pSecurityDescriptor: PSECURITY_DESCRIPTOR, dwRevision: DWORD, ) -> BOOL498     pub fn InitializeSecurityDescriptor(
499         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
500         dwRevision: DWORD,
501     ) -> BOOL;
InitializeSid( Sid: PSID, pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY, nSubAuthorityCount: BYTE, ) -> BOOL502     pub fn InitializeSid(
503         Sid: PSID,
504         pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY,
505         nSubAuthorityCount: BYTE,
506     ) -> BOOL;
IsTokenRestricted( TokenHandle: HANDLE, ) -> BOOL507     pub fn IsTokenRestricted(
508         TokenHandle: HANDLE,
509     ) -> BOOL;
IsValidAcl( pAcl: PACL, ) -> BOOL510     pub fn IsValidAcl(
511         pAcl: PACL,
512     ) -> BOOL;
IsValidSecurityDescriptor( pSecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> BOOL513     pub fn IsValidSecurityDescriptor(
514         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
515     ) -> BOOL;
IsValidSid( pSid: PSID, ) -> BOOL516     pub fn IsValidSid(
517         pSid: PSID,
518     ) -> BOOL;
IsWellKnownSid( pSid: PSID, WellKnownSidType: WELL_KNOWN_SID_TYPE, ) -> BOOL519     pub fn IsWellKnownSid(
520         pSid: PSID,
521         WellKnownSidType: WELL_KNOWN_SID_TYPE,
522     ) -> 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, ) -> BOOL523     pub fn MakeAbsoluteSD(
524         pSelfRelativeSD: PSECURITY_DESCRIPTOR,
525         pAbsoluteSD: PSECURITY_DESCRIPTOR,
526         lpdwAbsoluteSDSize: LPDWORD,
527         pDacl: PACL,
528         lpdwDaclSize: LPDWORD,
529         pSacl: PACL,
530         lpdwSaclSize: LPDWORD,
531         pOwner: PSID,
532         lpdwOwnerSize: LPDWORD,
533         pPrimaryGroup: PSID,
534         lpdwPrimaryGroupSize: LPDWORD,
535     ) -> BOOL;
MakeSelfRelativeSD( pAbsoluteSD: PSECURITY_DESCRIPTOR, pSelfRelativeSD: PSECURITY_DESCRIPTOR, lpdwBufferLength: LPDWORD, ) -> BOOL536     pub fn MakeSelfRelativeSD(
537         pAbsoluteSD: PSECURITY_DESCRIPTOR,
538         pSelfRelativeSD: PSECURITY_DESCRIPTOR,
539         lpdwBufferLength: LPDWORD,
540     ) -> BOOL;
MapGenericMask( AccessMask: PDWORD, GenericMapping: PGENERIC_MAPPING, )541     pub fn MapGenericMask(
542         AccessMask: PDWORD,
543         GenericMapping: PGENERIC_MAPPING,
544     );
ObjectCloseAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: BOOL, ) -> BOOL545     pub fn ObjectCloseAuditAlarmW(
546         SubsystemName: LPCWSTR,
547         HandleId: LPVOID,
548         GenerateOnClose: BOOL,
549     ) -> BOOL;
ObjectDeleteAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, GenerateOnClose: BOOL, ) -> BOOL550     pub fn ObjectDeleteAuditAlarmW(
551         SubsystemName: LPCWSTR,
552         HandleId: LPVOID,
553         GenerateOnClose: BOOL,
554     ) -> 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, ) -> BOOL555     pub fn ObjectOpenAuditAlarmW(
556         SubsystemName: LPCWSTR,
557         HandleId: LPVOID,
558         ObjectTypeName: LPWSTR,
559         ObjectName: LPWSTR,
560         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
561         ClientToken: HANDLE,
562         DesiredAccess: DWORD,
563         GrantedAccess: DWORD,
564         Privileges: PPRIVILEGE_SET,
565         ObjectCreation: BOOL,
566         AccessGranted: BOOL,
567         GenerateOnClose: LPBOOL,
568     ) -> BOOL;
ObjectPrivilegeAuditAlarmW( SubsystemName: LPCWSTR, HandleId: LPVOID, ClientToken: HANDLE, DesiredAccess: DWORD, Privileges: PPRIVILEGE_SET, AccessGranted: BOOL, ) -> BOOL569     pub fn ObjectPrivilegeAuditAlarmW(
570         SubsystemName: LPCWSTR,
571         HandleId: LPVOID,
572         ClientToken: HANDLE,
573         DesiredAccess: DWORD,
574         Privileges: PPRIVILEGE_SET,
575         AccessGranted: BOOL,
576     ) -> BOOL;
PrivilegeCheck( ClientToken: HANDLE, RequiredPrivileges: PPRIVILEGE_SET, pfResult: LPBOOL, ) -> BOOL577     pub fn PrivilegeCheck(
578         ClientToken: HANDLE,
579         RequiredPrivileges: PPRIVILEGE_SET,
580         pfResult: LPBOOL,
581     ) -> BOOL;
PrivilegedServiceAuditAlarmW( SubsystemName: LPCWSTR, ServiceName: LPCWSTR, ClientToken: HANDLE, Privileges: PPRIVILEGE_SET, AccessGranted: BOOL, ) -> BOOL582     pub fn PrivilegedServiceAuditAlarmW(
583         SubsystemName: LPCWSTR,
584         ServiceName: LPCWSTR,
585         ClientToken: HANDLE,
586         Privileges: PPRIVILEGE_SET,
587         AccessGranted: BOOL,
588     ) -> BOOL;
QuerySecurityAccessMask( SecurityInformation: SECURITY_INFORMATION, DesiredAccess: LPDWORD, )589     pub fn QuerySecurityAccessMask(
590         SecurityInformation: SECURITY_INFORMATION,
591         DesiredAccess: LPDWORD,
592     );
RevertToSelf() -> BOOL593     pub fn RevertToSelf() -> BOOL;
SetAclInformation( pAcl: PACL, pAclInformation: LPVOID, nAclInformationLength: DWORD, dwAclInfomrationClass: ACL_INFORMATION_CLASS, ) -> BOOL594     pub fn SetAclInformation(
595         pAcl: PACL,
596         pAclInformation: LPVOID,
597         nAclInformationLength: DWORD,
598         dwAclInfomrationClass: ACL_INFORMATION_CLASS,
599     ) -> BOOL;
SetFileSecurityW( lpFileName: LPCWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> BOOL600     pub fn SetFileSecurityW(
601         lpFileName: LPCWSTR,
602         SecurityInformation: SECURITY_INFORMATION,
603         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
604     ) -> BOOL;
SetKernelObjectSecurity( Handle: HANDLE, SecurityInformation: SECURITY_INFORMATION, SecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> BOOL605     pub fn SetKernelObjectSecurity(
606         Handle: HANDLE,
607         SecurityInformation: SECURITY_INFORMATION,
608         SecurityDescriptor: PSECURITY_DESCRIPTOR,
609     ) -> BOOL;
SetPrivateObjectSecurity( SecurityInformation: SECURITY_INFORMATION, ModificationDescriptor: PSECURITY_DESCRIPTOR, ObjectsSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, GenericMapping: PGENERIC_MAPPING, Token: HANDLE, ) -> BOOL610     pub fn SetPrivateObjectSecurity(
611         SecurityInformation: SECURITY_INFORMATION,
612         ModificationDescriptor: PSECURITY_DESCRIPTOR,
613         ObjectsSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
614         GenericMapping: PGENERIC_MAPPING,
615         Token: HANDLE,
616     ) -> BOOL;
SetPrivateObjectSecurityEx( SecurityInformation: SECURITY_INFORMATION, ModificationDescriptor: PSECURITY_DESCRIPTOR, ObjectsSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, AutoInheritFlags: ULONG, GenericMapping: PGENERIC_MAPPING, Token: HANDLE, ) -> BOOL617     pub fn SetPrivateObjectSecurityEx(
618         SecurityInformation: SECURITY_INFORMATION,
619         ModificationDescriptor: PSECURITY_DESCRIPTOR,
620         ObjectsSecurityDescriptor: *mut PSECURITY_DESCRIPTOR,
621         AutoInheritFlags: ULONG,
622         GenericMapping: PGENERIC_MAPPING,
623         Token: HANDLE,
624     ) -> BOOL;
SetSecurityAccessMask( SecurityInformation: SECURITY_INFORMATION, DesiredAccess: LPDWORD, )625     pub fn SetSecurityAccessMask(
626         SecurityInformation: SECURITY_INFORMATION,
627         DesiredAccess: LPDWORD,
628     );
SetSecurityDescriptorControl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, ControlBitsOfInterest: SECURITY_DESCRIPTOR_CONTROL, ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL, ) -> BOOL629     pub fn SetSecurityDescriptorControl(
630         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
631         ControlBitsOfInterest: SECURITY_DESCRIPTOR_CONTROL,
632         ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL,
633     ) -> BOOL;
SetSecurityDescriptorDacl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, bDaclPresent: BOOL, pDacl: PACL, bDaclDefaulted: BOOL, ) -> BOOL634     pub fn SetSecurityDescriptorDacl(
635         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
636         bDaclPresent: BOOL,
637         pDacl: PACL,
638         bDaclDefaulted: BOOL,
639     ) -> BOOL;
SetSecurityDescriptorGroup( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pGroup: PSID, bGroupDefaulted: BOOL, ) -> BOOL640     pub fn SetSecurityDescriptorGroup(
641         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
642         pGroup: PSID,
643         bGroupDefaulted: BOOL,
644     ) -> BOOL;
SetSecurityDescriptorOwner( pSecurityDescriptor: PSECURITY_DESCRIPTOR, pOwner: PSID, bOwnerDefaulted: BOOL, ) -> BOOL645     pub fn SetSecurityDescriptorOwner(
646         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
647         pOwner: PSID,
648         bOwnerDefaulted: BOOL,
649     ) -> BOOL;
SetSecurityDescriptorRMControl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, RMControl: PUCHAR, ) -> DWORD650     pub fn SetSecurityDescriptorRMControl(
651         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
652         RMControl: PUCHAR,
653     ) -> DWORD;
SetSecurityDescriptorSacl( pSecurityDescriptor: PSECURITY_DESCRIPTOR, bSaclPresent: BOOL, pSacl: PACL, bSaclDefaulted: BOOL, ) -> BOOL654     pub fn SetSecurityDescriptorSacl(
655         pSecurityDescriptor: PSECURITY_DESCRIPTOR,
656         bSaclPresent: BOOL,
657         pSacl: PACL,
658         bSaclDefaulted: BOOL,
659     ) -> BOOL;
SetTokenInformation( TokenHandle: HANDLE, TokenInformationClass: TOKEN_INFORMATION_CLASS, TokenInformation: LPVOID, TokenInformationLength: DWORD, ) -> BOOL660     pub fn SetTokenInformation(
661         TokenHandle: HANDLE,
662         TokenInformationClass: TOKEN_INFORMATION_CLASS,
663         TokenInformation: LPVOID,
664         TokenInformationLength: DWORD,
665     ) -> BOOL;
SetCachedSigningLevel( SourceFiles: PHANDLE, SourceFileCount: ULONG, Flags: ULONG, TargetFile: HANDLE, ) -> BOOL666     pub fn SetCachedSigningLevel(
667         SourceFiles: PHANDLE,
668         SourceFileCount: ULONG,
669         Flags: ULONG,
670         TargetFile: HANDLE,
671     ) -> BOOL;
GetCachedSigningLevel( File: HANDLE, Flags: PULONG, SigningLevel: PULONG, Thumbprint: PUCHAR, ThumbprintSize: PULONG, ThumbprintAlgorithm: PULONG, ) -> BOOL672     pub fn GetCachedSigningLevel(
673         File: HANDLE,
674         Flags: PULONG,
675         SigningLevel: PULONG,
676         Thumbprint: PUCHAR,
677         ThumbprintSize: PULONG,
678         ThumbprintAlgorithm: PULONG,
679     ) -> BOOL;
CveEventWrite( CveId: PCWSTR, AdditionalDetails: PCWSTR, ) -> LONG680     pub fn CveEventWrite(
681         CveId: PCWSTR,
682         AdditionalDetails: PCWSTR,
683     ) -> LONG;
DeriveCapabilitySidsFromName( CapName: LPCWSTR, CapabilityGroupSids: *mut *mut PSID, CapabilityGroupSidCount: *mut DWORD, CapabilitySids: *mut *mut PSID, CapabilitySidCount: *mut DWORD, ) -> BOOL684     pub fn DeriveCapabilitySidsFromName(
685         CapName: LPCWSTR,
686         CapabilityGroupSids: *mut *mut PSID,
687         CapabilityGroupSidCount: *mut DWORD,
688         CapabilitySids: *mut *mut PSID,
689         CapabilitySidCount: *mut DWORD,
690     ) -> BOOL;
691 }
692