SmpFpReleaseResource
UINT64 __stdcall SmpFpReleaseResource(
_SM_FORWARD_PROGRESS_CTX *FpContext,
_SM_FP_RESOURCE_TYPE ResourceType,
VOID *Resource){
__int64 v4;
unsigned __int8 v6;
_QWORD *v7;
unsigned __int64 v8;
unsigned int v9;
v4 = ResourceType;
v6 = ExAcquireSpinLockExclusive((INT64 *)FpContext);
v7 = *(_QWORD **)&FpContext[2 * v4 + 8];
v8 = v6;
while( 1 )
{
if( !v7 )
{
v9 = 0;
goto LABEL_6;
}
if( (VOID *)(v7[1] & 0xFFFFFFFFFFFFFFF8ui64) == Resource )
break;
v7 = (_QWORD *)*v7;
}
*((_DWORD *)v7 + 2) &= ~1u;
--*((_BYTE *)FpContext + v4 + 80);
v9 = 1;
--*((_BYTE *)FpContext + 86);
LABEL_6:
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)FpContext);
__writecr8(v8);
return v9;
}Referenced by:
SmFpFree