ViTargetRemovingCheckEtwWmi
VOID __stdcall ViTargetRemovingCheckEtwWmi(_VF_TARGET_VERIFIED_DRIVER_DATA *VerifiedData, VOID *DriverStart){
void *WMICallback;
ULONG_PTR v3;
_LIST_ENTRY *p_EtwHandlesListHead;
_LIST_ENTRY *Flink;
_LIST_ENTRY *v7;
_LIST_ENTRY *Blink;
UINT64 v9;
WMICallback = VerifiedData->WMICallback;
v3 = (unsigned int)DriverStart;
if( WMICallback && (MmVerifierData & 0x800) != 0 )
VerifierBugCheckIfAppropriate(0xC4ui64, 0xDAu, (ULONG_PTR)DriverStart, (ULONG_PTR)WMICallback, 0, v9);
p_EtwHandlesListHead = &VerifiedData->EtwHandlesListHead;
Flink = p_EtwHandlesListHead->Flink;
if( p_EtwHandlesListHead->Flink != p_EtwHandlesListHead )
{
if( (MmVerifierData & 0x800) != 0 )
{
VerifierBugCheckIfAppropriate(0xC4ui64, 0xDDu, (ULONG_PTR)Flink[1].Blink, v3, (ULONG_PTR)Flink[1].Flink, v9);
Flink = p_EtwHandlesListHead->Flink;
}
do
{
v7 = Flink->Flink;
if( Flink->Flink->Blink != Flink || (Blink = Flink->Blink, Blink->Flink != Flink) )
__fastfail(3u);
Blink->Flink = v7;
v7->Blink = Blink;
ExFreePoolWithTag(Flink, 0);
Flink = p_EtwHandlesListHead->Flink;
}
while( p_EtwHandlesListHead->Flink != p_EtwHandlesListHead );
}
}Referenced by:
VfTargetDriversRemove