CmpCheckHivePrimaryFileReadWriteAccess

UINT8 __stdcall CmpCheckHivePrimaryFileReadWriteAccess(VOID *HiveFileSecurityDescriptor){
  char PreviousMode; 
  _GENERIC_MAPPING *GenericMapping; 
  UINT8 v4; 
  _KPROCESSOR_MODE AccessMode; 
  _SECURITY_SUBJECT_CONTEXT SubjectContext; 
  int AccessStatus; 
  unsigned int GrantedAccess; 

  AccessStatus = 0;
  GrantedAccess = 0;
  memset(&SubjectContext, 0, sizeof(SubjectContext));
  PreviousMode = KeGetCurrentThread()->PreviousMode;
  SeCaptureSubjectContext((INT64)&SubjectContext);
  GenericMapping = IoGetFileObjectGenericMapping();
  LOBYTE(AccessMode) = PreviousMode;
  v4 = (unsigned __int8)SeAccessCheck(
                          HiveFileSecurityDescriptor,
                          &SubjectContext,
                          0,
                          3,
                          0,
                          0i64,
                          GenericMapping,
                          AccessMode,
                          &GrantedAccess,
                          &AccessStatus);
  SeReleaseSubjectContext(&SubjectContext);
  return v4;
}

Referenced by:

CmLoadAppKey