IopCheckSessionDeviceAccess
UINT8 __stdcall IopCheckSessionDeviceAccess(_DEVICE_OBJECT *DeviceObject){
int SessionId;
int v3;
INT64 ThreadServerSilo;
INT64 *v5;
int SessionIdFromPDO;
UINT8 result;
SessionId = MmGetSessionIdEx(*((_QWORD *)KeGetCurrentThread() + 23));
v3 = 0;
if( SessionId != -1 )
v3 = SessionId;
if( KeIsExecutingInArbitraryThreadContext()
|| (ThreadServerSilo = PsGetThreadServerSilo((INT64)KeGetCurrentThread())) == 0 )
{
v5 = &PspHostSiloGlobals;
}
else
{
v5 = *(INT64 **)(ThreadServerSilo + 1272);
}
result = 1;
if( v3 != *(_DWORD *)v5[141] || IopSessionZeroAccessCheckEnabled )
{
SessionIdFromPDO = IopGetSessionIdFromPDO(DeviceObject);
if( SessionIdFromPDO != -1 && v3 != SessionIdFromPDO )
return 0;
}
return result;
}Referenced by:
IopParseDevice