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