SepUpdateSiloInClientSecurity

__int64 __fastcall SepUpdateSiloInClientSecurity(__int64 a1, _EJOB *a2){
  _ADAPTER_OBJECT *v2; 
  _HALP_DMA_TRANSLATION_ENTRY *ScatterBufferListHead; 
  NTSTATUS ServerSiloToken; 
  VOID *v7; 
  _EJOB *Silo; 
  VOID *DuplicateToken; 
  _HALP_DMA_TRANSLATION_ENTRY *v11; 

  v2 = *(_ADAPTER_OBJECT **)(a1 + 16);
  Silo = 0i64;
  DuplicateToken = 0i64;
  ScatterBufferListHead = v2->AdapterObject.ScatterBufferListHead;
  v11 = ScatterBufferListHead;
  ServerSiloToken = SeQueryServerSiloToken(v2, (PFLUSH_ADAPTER_BUFFERS_EX *)&Silo);
  if( ServerSiloToken >= 0 )
  {
    if( PsIsHostSilo(Silo) )
    {
      if( (_DWORD)ScatterBufferListHead == 999 && !HIDWORD(v11) )
      {
        ServerSiloToken = SepCopyClientTokenAndSetSilo(
                            v2,
                            *(_SECURITY_IMPERSONATION_LEVEL *)(a1 + 4),
                            a2,
                            &DuplicateToken);
        if( ServerSiloToken >= 0 )
        {
          v7 = DuplicateToken;
          *(_QWORD *)(a1 + 16) = DuplicateToken;
          *(_BYTE *)(a1 + 24) = 0;
          HalPutDmaAdapter(v2);
          SeGetTokenControlInformation(v7, (_TOKEN_CONTROL *)(a1 + 28));
        }
      }
    }
  }
  return(unsigned int)ServerSiloToken;
}

Referenced by:

SeCreateClientSecurityEx