PopExtendConnectionState
VOID __stdcall PopExtendConnectionState(UINT64 SessionId){
unsigned int v1;
VOID **PoolWithTag;
VOID **v3;
PVOID v4;
if( PopMaximumConnectionSessions )
{
if( 2 * PopMaximumConnectionSessions <= (unsigned int)SessionId )
v1 = (unsigned int)(SessionId + 8) >> 3;
else
v1 = (unsigned int)PopMaximumConnectionSessions >> 2;
}
else
{
v1 = 8;
}
PoolWithTag = ExAllocatePoolWithTag(1ui64, v1, 1936020304i64);
v3 = PoolWithTag;
if( PoolWithTag )
{
memset(PoolWithTag, 0i64, v1);
v4 = PopConnectionState;
if( PopConnectionState )
{
memmove(v3, PopConnectionState, (unsigned int)PopMaximumConnectionSessions >> 3);
ExFreePoolWithTag(v4, 0x73655350u);
}
PopConnectionState = v3;
PopMaximumConnectionSessions = 8 * v1;
LODWORD(PopConnectionBitmap) = 8 * v1;
qword_140C20378 = (__int64)v3;
}
else
{
PopMaximumConnectionSessions = 0;
}
}Referenced by:
PopInitializeAdpm
PopSetSessionUserStatus