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