SmpSystemStoreCreate
INT64 __fastcall SmpSystemStoreCreate(){
_ETHREAD *CurrentThread;
int v1;
int a4;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
a4 = 0;
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx((UINT64)&qword_140D231B8, 0i64);
if( dword_140D231B0 == -1 )
{
v1 = SmpDirtyStoreCreate(
(INT64)&SmGlobals,
(unsigned int)(*(_QWORD *)(*(_QWORD *)qword_140C4E388 + 6928i64) >> 8) >> 1,
0i64,
&a4);
if( v1 >= 0 )
dword_140D231B0 = a4;
}
else
{
v1 = -1073740008;
}
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&qword_140D231B8, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&qword_140D231B8);
KeAbPostRelease(&qword_140D231B8);
KeLeaveCriticalRegion();
return(unsigned int)v1;
}Referenced by:
MiCreatePagingFile
SmProcessConfigRequest