PsAcquireSiloHardReference
NTSTATUS __stdcall PsAcquireSiloHardReference(PVOID Object){
signed __int64 v2;
unsigned __int64 i;
signed __int64 v4;
if( !Object )
return 0;
if( (*((_DWORD *)Object + 330) & 0x40000000) == 0 )
__int2c();
_m_prefetchw((char *)Object + 1520);
v2 = *((_QWORD *)Object + 190);
for( i = v2 + 1; i > 1; i = v2 + 1 )
{
v4 = v2;
v2 = _InterlockedCompareExchange64((volatile signed __int64 *)Object + 190, i, v2);
if( v4 == v2 )
{
ObfReferenceObjectWithTag(Object, 0x486C6953u);
return 0;
}
}
if( i != 1 )
__fastfail(0xEu);
return -1073741558;
}Referenced by:
IopAllocateFoExtensionsOnCreate
IopParseDevice