ViTargetWMIDeregister
VOID __stdcall ViTargetWMIDeregister(_DEVICE_OBJECT *DeviceObject, VOID *CallerAddress){
int v3;
VOID *v4;
_VF_AVL_TREE_NODE *v5;
_VF_AVL_TREE *v6;
unsigned __int64 RangeSize;
_VF_AVL_LOCK_CONTEXT Context[4];
*(_OWORD *)Context = 0i64;
VfAvlInitializeLockContext(Context, Exclusive);
v5 = VfAvlLookupTreeNode(&ViTargetDriversAvl, Context, v4, (unsigned int)(v3 + 1));
if( v5 && (RangeSize = v5[3].RangeSize) != 0 && *(_DEVICE_OBJECT **)(RangeSize + 8) == DeviceObject )
{
*(_QWORD *)(RangeSize + 8) = 0i64;
}
else
{
++ViTargetWMIRegistrationMismatches;
VfAvlEnumerateNodes(
v6,
Context,
(UINT64 *)ViTargetWMIDeregisterCallback,
(_VF_AVL_TREE_NODE *)DeviceObject,
*(VOID **)Context,
*(VOID **)&Context[2]);
}
VfAvlCleanupLockContext(Context);
}Referenced by:
VerifierIoWMIRegistrationControl