MiObtainProtoReference
INT64 __fastcall MiObtainProtoReference(INT64 a1, CHAR a2){
INT64 result;
UINT64 SpinCount;
if( (a2 & 1) != 0 )
{
MiLockNestedPageAtDpcInline(a1);
}
else
{
LODWORD(SpinCount) = 0;
while( _interlockedbittestandset64((volatile signed __int32 *)(a1 + 24), 0x3Fui64) )
{
do
KeYieldProcessorEx(&SpinCount);
while( *(__int64 *)(a1 + 24) < 0 );
}
}
MiAddLockedPageCharge(a1, 1);
result = 0x7FFFFFFFFFFFFFFFi64;
_InterlockedAnd64((volatile signed __int64 *)(a1 + 24), 0x7FFFFFFFFFFFFFFFui64);
return result;
}Referenced by:
MiCopyDataPageToImagePage
MiCopyFileOnlyGlobalSubsectionPage
MiCopyImageExtentContents
MiFinishMdlForMappedFileFault
MiFlushSectionInternal
MiHandleCollidedFault
MiIdealClusterPage
MiPfPutPagesInTransition
MiResolvePageFileFault
MiTranslatePageForCopy
MiWalkEntireImage