SeAuditHardLinkCreationWithTransaction

VOID __stdcall SeAuditHardLinkCreationWithTransaction(
        _UNICODE_STRING *FileName,
        _UNICODE_STRING *LinkName,
        UINT8 bSuccess,
        _GUID *TransactionId){
  _GUID *v8; 
  _QWORD *PrimaryToken; 
  _QWORD *ClientToken; 
  void **v11; 
  _SECURITY_SUBJECT_CONTEXT SubjectContext; 
  _SE_ADT_PARAMETER_ARRAY AuditParameters; 
  __int128 v14; 

  SubjectContext.ClientToken = 0i64;
  SubjectContext.ImpersonationLevel = 0x80000000;
  memset(&SubjectContext.ImpersonationLevel + 1, 0, 20);
  memset(&AuditParameters, 0i64, sizeof(AuditParameters));
  AuditParameters.CategoryId = 3;
  AuditParameters.FlatSubCategoryId = 116;
  v8 = (_GUID *)&v14;
  AuditParameters.AuditId = 4664;
  if( TransactionId )
    v8 = TransactionId;
  AuditParameters.Type = 8;
  v14 = 0i64;
  if( !bSuccess )
    AuditParameters.Type = 16;
  SeCaptureSubjectContext((INT64)&SubjectContext);
  PrimaryToken = SubjectContext.PrimaryToken;
  ClientToken = SubjectContext.PrimaryToken;
  AuditParameters.Parameters[0].Type = SeAdtParmTypeSid;
  if( SubjectContext.ClientToken )
    ClientToken = SubjectContext.ClientToken;
  AuditParameters.Parameters[1].Type = SeAdtParmTypeString;
  if( SubjectContext.ClientToken )
    PrimaryToken = SubjectContext.ClientToken;
  AuditParameters.Parameters[1].Length = 32;
  AuditParameters.Parameters[2].Type = SeAdtParmTypeLogonId;
  AuditParameters.Parameters[3].Type = SeAdtParmTypeFileSpec;
  v11 = (void **)ClientToken[19];
  AuditParameters.Parameters[4].Type = SeAdtParmTypeFileSpec;
  AuditParameters.Parameters[2].Length = 8;
  AuditParameters.Parameters[3].Address = FileName;
  AuditParameters.Parameters[0].Address = *v11;
  AuditParameters.Parameters[4].Address = LinkName;
  AuditParameters.Parameters[5].Type = SeAdtParmTypeGuid;
  LODWORD(v11) = *((unsigned __int8 *)AuditParameters.Parameters[0].Address + 1);
  AuditParameters.Parameters[5].Length = 16;
  AuditParameters.Parameters[5].Address = v8;
  AuditParameters.ParameterCount = 6;
  AuditParameters.Parameters[0].Length = 4 * (_DWORD)v11 + 8;
  AuditParameters.Parameters[1].Address = (void *)&SeSubsystemName;
  AuditParameters.Parameters[2].Data[0] = PrimaryToken[3];
  AuditParameters.Parameters[3].Length = FileName->Length + 16;
  AuditParameters.Parameters[4].Length = LinkName->Length + 16;
  SepAdtLogAuditRecord(&AuditParameters);
  SeReleaseSubjectContext(&SubjectContext);
}

Referenced by:

SeAuditHardLinkCreation