ExFlushTb
VOID __stdcall ExFlushTb(UINT64 Number, _KTB_FLUSH_VA *Virtual, _KTBFLUSH_TYPE FlushType){
_ETHREAD *CurrentThread;
unsigned int v4;
void *SvmData;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v4 = Number;
if( FlushType == FlushUser )
{
SvmData = CurrentThread->Tcb.ApcState.Process->SvmData;
if( SvmData )
(*((void(__fastcall **)(void *, _QWORD, _KTB_FLUSH_VA *))HalIommuDispatch + 9))(SvmData, v4, Virtual);
}
else
{
(*((void(__fastcall **)(_QWORD, _QWORD, _KTB_FLUSH_VA *))HalIommuDispatch + 10))(
*(&WheapDeferredInternalLogsEventLock + 298),
(unsigned int)Number,
Virtual);
}
}Referenced by:
KeFlushEntireTb
KeFlushMultipleRangeCurrentTb
KeFlushMultipleRangeTb
KeFlushSingleCurrentTb
KeFlushTb