ViDeadlockSearchResource
_VI_DEADLOCK_RESOURCE *__stdcall ViDeadlockSearchResource(PVOID ResourceAddress, PVOID *NodesToFree){
unsigned __int64 v3;
LIST_ENTRY *v4;
PVOID *v5;
LIST_ENTRY *i;
v3 = ((unsigned __int64)ResourceAddress >> 12) % 0x3FF;
v4 = (LIST_ENTRY *)(*((_QWORD *)ViDeadlockGlobals + 2) + 16 * v3);
if( v4->Flink != v4
&& (unsigned int)VfUtilAddressRangeFit(
(_VF_ADDRESS_RANGE *)ViDeadlockGlobals + v3 + 2,
(UINT8 *)ResourceAddress,
(UINT8 *)ResourceAddress + 1) )
{
ViDeadlockTrimResources(v4, v5);
for( i = v4->Flink; i != v4; i = i->Flink )
{
if( i[-2].Flink == ResourceAddress )
return(_VI_DEADLOCK_RESOURCE *)&i[-3].Blink;
}
}
return 0i64;
}Referenced by:
VfDeadlockAcquireResource
VfDeadlockReleaseResource
ViDeadlockAddResource