IopCheckSessionDeviceAccess
UINT8 __stdcall IopCheckSessionDeviceAccess(_DEVICE_OBJECT *DeviceObject){
NTSTATUS SessionId;
NTSTATUS v3;
int v4;
__int64 v5;
INT64 *v6;
int SessionIdFromPDO;
UINT8 result;
SessionId = MmGetSessionIdEx(KeGetCurrentThread()->ApcState.Process);
v3 = 0;
if( SessionId != -1 )
v3 = SessionId;
LOBYTE(v4) = KeIsExecutingInArbitraryThreadContext();
if( v4 || (LODWORD(v5) = PsGetThreadServerSilo((INT64)KeGetCurrentThread()), !v5) )
v6 = &PspHostSiloGlobals;
else
v6 = *(INT64 **)(v5 + 1272);
result = 1;
if( v3 != *(_DWORD *)v6[141] || *(&stru_140CF2E80 + 1658) )
{
SessionIdFromPDO = IopGetSessionIdFromPDO(DeviceObject);
if( SessionIdFromPDO != -1 && v3 != SessionIdFromPDO )
return 0;
}
return result;
}Referenced by:
IopParseDevice