SmProcessStoreMemoryPriorityRequest
INT64 __fastcall SmProcessStoreMemoryPriorityRequest(VOID *UserData, UINT64 UserDataLength, CHAR RequestorMode){
__int128 *v3;
int v4;
NTSTATUS v5;
INT64 v7;
PADAPTER_OBJECT DmaAdapter;
int v9;
INT64 v10;
__int128 v11;
_KAPC_STATE ApcState;
v3 = (__int128 *)UserData;
memset(&ApcState, 0, sizeof(ApcState));
v10 = 0i64;
DmaAdapter = 0i64;
v4 = 0;
v9 = 0;
v11 = 0i64;
if( (_DWORD)UserDataLength == 16 )
{
if( RequestorMode )
{
if( ((unsigned __int8)UserData & 7) != 0 )
ExRaiseDatatypeMisalignment();
if( (unsigned __int64)UserData >= 0x7FFFFFFF0000i64 )
UserData = (VOID *)0x7FFFFFFF0000i64;
*(_BYTE *)UserData = *(_BYTE *)UserData;
*((_BYTE *)UserData + 15) = *((_BYTE *)UserData + 15);
}
v11 = *v3;
if( (_BYTE)v11 == 1 )
{
if( (v11 & 0xFFFFFC00) != 0 )
{
v5 = -1073741811;
}
else if( (v11 & 0x100) != 0 )
{
v5 = SmRereferenceProcessObject(*((void **)&v11 + 1), UserDataLength, RequestorMode, &DmaAdapter);
if( v5 >= 0 )
{
_InterlockedOr((volatile signed __int32 *)&DmaAdapter[135].DmaOperations + 1, 0x40000u);
if( (v11 & 0x200) != 0 )
{
if( *((PADAPTER_OBJECT *)KeGetCurrentThread() + 23) != DmaAdapter )
{
v4 = 1;
KiStackAttachProcess((_KPROCESS *)DmaAdapter, 0i64, &ApcState);
}
v10 = (INT64)DmaAdapter;
v7 = SmpKeyedStoreEntryGet((UINT64)&qword_140D23188, &v10, 0i64, 0i64);
if( v7 )
*(_BYTE *)(*(_QWORD *)SmKmStoreRefFromStoreIndex((INT64)&SmGlobals, *(_WORD *)(v7 + 16) & 0x3FF) + 6023i64) = 1;
else
v5 = -1073741632;
}
else
{
v5 = 0;
}
}
}
else
{
v5 = -1073741637;
}
}
else
{
v5 = -1073741735;
}
}
else
{
v5 = -1073741306;
}
if( v4 )
KiUnstackDetachProcess(&ApcState, 0i64);
if( DmaAdapter )
HalPutDmaAdapter(DmaAdapter);
return(unsigned int)v5;
}Referenced by:
SmSetStoreInformation