SePrivilegeCheck

UINT8 __stdcall SePrivilegeCheck(
        PRIVILEGE_SET *RequiredPrivileges,
        SECURITY_SUBJECT_CONTEXT *SubjectSecurityContext,
        INT8 AccessMode){
  void *ClientToken; 
  if( !AccessMode )
    return 1;
  ClientToken = SubjectSecurityContext->ClientToken;
  if( !SubjectSecurityContext->ClientToken )
  {
    ClientToken = SubjectSecurityContext->PrimaryToken;
    return SepPrivilegeCheck(
             (INT64)ClientToken,
             (INT64)RequiredPrivileges->Privilege,
             RequiredPrivileges->PrivilegeCount,
             RequiredPrivileges->Control,
             AccessMode);
  }
  if( SubjectSecurityContext->ImpersonationLevel >= SecurityImpersonation )
    return SepPrivilegeCheck(
             (INT64)ClientToken,
             (INT64)RequiredPrivileges->Privilege,
             RequiredPrivileges->PrivilegeCount,
             RequiredPrivileges->Control,
             AccessMode);
  return 0;
}

Referenced by:

CMFCheckAccess
IopCheckBackupRestorePrivilege
NtSetInformationJobObject
ObpAdjustCreatorAccessState
ObpCreateHandle
PiAuDoesClientHavePrivilege
PsOpenProcess
PspSinglePrivCheck
RtlpNewSecurityObject
SeCheckPrivilegedObject
SeSinglePrivilegeCheckEx