SepReferenceLogonSessionSilo
INT64 __fastcall SepReferenceLogonSessionSilo(
_LUID *LogonId,
_EJOB *ServerSilo,
_SEP_LOGON_SESSION_REFERENCES **ReturnSession){
__int64 v6;
_SEP_LOGON_SESSION_REFERENCES *v7;
_ETHREAD *CurrentThread;
struct _ERESOURCE *v9;
INT64 result;
v6 = (1529154084 * LogonId->LowPart) >> 28;
v7 = (_SEP_LOGON_SESSION_REFERENCES *)(SepLogonSessions + 8 * v6);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
v9 = &SepRmDbLock + (v6 & 3);
ExAcquireResourceExclusiveLite(v9, 1u);
do
{
v7 = v7->Next;
if( !v7 )
{
ExReleaseResourceLite(v9);
KeLeaveCriticalRegion();
return 3221225567i64;
}
}
while( v7->ServerSilo != ServerSilo
|| LogonId->LowPart != v7->LogonId.LowPart
|| LogonId->HighPart != v7->LogonId.HighPart );
_m_prefetchw(&v7->Flags);
if( (_InterlockedOr((volatile signed __int32 *)&v7->Flags, 8u) & 8) != 0
&& _InterlockedIncrement64(&v7->ReferenceCount) <= 1 )
{
__fastfail(0xEu);
}
ExReleaseResourceLite(v9);
KeLeaveCriticalRegion();
result = 0i64;
*ReturnSession = v7;
return result;
}Referenced by:
NtQueryInformationToken
SeGetLinkedToken
SeInitServerSilo
SeSetSessionIdTokenWithLinked
SepReferenceLogonSession
SepSetServerSiloToken