SeQuerySessionIdTokenEx
NTSTATUS __stdcall SeQuerySessionIdTokenEx(PVOID Token, UINT64 *SessionId, UINT8 *IsServiceSession){
_ETHREAD *CurrentThread;
UINT64 *v5;
bool v7;
unsigned int v8;
_EJOB *ServerSilo;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
ServerSilo = 0i64;
v5 = SessionId;
--*((_WORD *)CurrentThread + 242);
v7 = 1;
LOBYTE(SessionId) = 1;
ExAcquireResourceSharedLite(*((PERESOURCE *)Token + 6), (BOOL)SessionId);
v8 = *((_DWORD *)Token + 30);
*(_DWORD *)v5 = v8;
ExReleaseResourceLite(*((PERESOURCE *)Token + 6));
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
if( v8 )
v7 = (int)PsGetSiloBySessionId(v8, &ServerSilo) >= 0
&& v8 == (unsigned int)PsGetServerSiloServiceSessionId(ServerSilo);
*IsServiceSession = v7;
return 0;
}Referenced by:
PiPnpRtlApplyMandatoryFilters
PiPnpRtlIsDeviceValidForSession
PiUEventApplyAdditionalFilters