ViDeadlockCanProceed
UINT64 __stdcall ViDeadlockCanProceed(VOID *Resource, _VI_DEADLOCK_RESOURCE_TYPE Type){
char v3;
UINT64 result;
result = 0;
if( ViDeadlockDetectionEnabled )
{
if( (unsigned int)KeNumberProcessors_0 <= 4 && KeGetCurrentIrql() <= 2u )
{
KeAreInterruptsEnabled((CHAR)Resource, *(_BYTE **)&Type);
if( v3 )
{
if( ViDeadlockGlobals )
{
ViDeadlockCheckStackLimits();
if( Resource != &ViDeadlockDatabaseLock && (struct _KTHREAD *)ViDeadlockDatabaseOwner != KeGetCurrentThread() )
return 1;
}
}
}
}
return result;
}Referenced by:
VfDeadlockAcquireResource
VfDeadlockDeleteMemoryRange
VfDeadlockInitializeResource
VfDeadlockReleaseResource