VfThunkApplyThunks
UINT64 __stdcall VfThunkApplyThunks(_KLDR_DATA_TABLE_ENTRY *DataTableEntry, UINT64 AlreadyRunning){
unsigned int v2;
unsigned int v4;
_ADAPTER_OBJECT *i;
_ADAPTER_OBJECT *NextSession;
_ADAPTER_OBJECT *v7;
_KAPC_STATE ApcState;
v2 = AlreadyRunning;
memset(&ApcState, 0, sizeof(ApcState));
if( !(_DWORD)AlreadyRunning || !MmIsSessionAddress(DataTableEntry->DllBase) )
return ViThunkApplyThunksCurrentSession(DataTableEntry, v2);
v4 = 1;
for( i = 0i64; ; i = v7 )
{
NextSession = (_ADAPTER_OBJECT *)MmGetNextSession(i);
v7 = NextSession;
if( !NextSession )
break;
if( MmAttachSession(NextSession, &ApcState) >= 0 )
{
v4 = 1;
if( MmIsDriverLoadedCurrentSession(DataTableEntry->DllBase) )
v4 = ViThunkApplyThunksCurrentSession(DataTableEntry, v2);
MmDetachSession(v7, &ApcState);
if( !v4 )
{
MmQuitNextSession(v7);
return v4;
}
}
}
return v4;
}Referenced by:
VfSuspectDriversLoadCallback