SMKM_STORE_MGR::SmStoreContentsRundown
__int64 __fastcall SMKM_STORE_MGR::SmStoreContentsRundown(__int64 a1, __int64 a2){
_OWORD *PoolWithTag;
__int64 v5;
void *v6;
int LowPart;
struct _EX_RUNDOWN_REF *v8;
union _LARGE_INTEGER v10[2];
__int16 Object;
char v12;
int v13;
__int64 v14[3];
Object = 0;
v13 = 0;
v14[1] = (__int64)v14;
v12 = 6;
v14[0] = (__int64)v14;
*(_OWORD *)&v10[0].LowPart = 0i64;
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x28ui64, 0x64576D73ui64);
v6 = PoolWithTag;
if( PoolWithTag )
{
*PoolWithTag = 0i64;
PoolWithTag[1] = 0i64;
*((_QWORD *)PoolWithTag + 4) = 0i64;
*((_DWORD *)PoolWithTag + 2) = -1;
*(_DWORD *)PoolWithTag = 3;
LowPart = SMKM_STORE_MGR::SmStoreRequestEx(v5, a2, (__int64)PoolWithTag, (__int64)&Object, (_QWORD *)v10);
if( LowPart >= 0 )
{
KeWaitForSingleObject(&Object, Executive, 0, 0, 0i64);
LowPart = v10[0].LowPart;
a2 = 0i64;
v6 = 0i64;
}
if( v6 )
ExFreePoolWithTag(v6, 0);
}
else
{
LowPart = -1073741670;
}
if( a2 )
{
v8 = (struct _EX_RUNDOWN_REF *)SmKmStoreRefFromStoreIndex(a1, *(_DWORD *)(a2 + 6016) & 0x3FF);
ExReleaseRundownProtection(v8 + 1);
}
return(unsigned int)LowPart;
}
Referenced by:
No references.