SmSetStoreInformation
NTSTATUS __stdcall SmSetStoreInformation(
VOID *SystemInformation,
VOID *SystemInformationLength,
INT64 PreviousMode,
_KPROCESSOR_MODE a4){
INT8 v4;
UINT64 v5;
NTSTATUS result;
__int128 UserData;
UINT64 UserDataLength;
v4 = a4;
if( (_DWORD)PreviousMode != 24 )
return -1073741820;
UserData = *(_OWORD *)SystemInformationLength;
UserDataLength = *((_QWORD *)SystemInformationLength + 2);
if( (unsigned int)*(_OWORD *)SystemInformationLength != 1 )
return -1073741811;
if( !SeSinglePrivilegeCheck(*(_QWORD *)&SeProfileSingleProcessPrivilege, a4) )
return -1073741790;
if( SDWORD1(UserData) <= 12 )
{
switch( DWORD1(UserData) )
{
case 0xC:
return SmcProcessStoreDeleteRequest(&CacheMgr, *((VOID **)&UserData + 1), (unsigned int)UserDataLength, v4);
case 3:
return SmProcessCreateRequest(
(_SMKM_STORE_LIST *)SmGlobals,
*((VOID **)&UserData + 1),
(unsigned int)UserDataLength,
v4);
case 4:
return SmProcessDeleteRequest(
(_SMKM_STORE_LIST *)SmGlobals,
*((VOID **)&UserData + 1),
(unsigned int)UserDataLength,
v4);
case 9:
return SmcProcessCreateRequest(&CacheMgr, *((VOID **)&UserData + 1), (unsigned int)UserDataLength, v4);
case 0xA:
return SmcProcessDeleteRequest(&CacheMgr, *((VOID **)&UserData + 1), (unsigned int)UserDataLength, v4);
case 0xB:
return SmcProcessStoreCreateRequest(&CacheMgr, *((VOID **)&UserData + 1), (unsigned int)UserDataLength, v4);
}
return -1073741821;
}
switch( DWORD1(UserData) )
{
case 0x11:
LOBYTE(v5) = v4;
SmProcessResizeRequest((UINT64)SmGlobals, *((UINT64 *)&UserData + 1), (unsigned int)UserDataLength, v5);
break;
case 0x12:
return SmcProcessResizeRequest(&CacheMgr, *((VOID **)&UserData + 1), (unsigned int)UserDataLength, v4);
case 0x13:
return SmProcessConfigRequest(*((VOID **)&UserData + 1), (unsigned int)UserDataLength, v4);
case 0x14:
return SmProcessStoreMemoryPriorityRequest(*((VOID **)&UserData + 1), (unsigned int)UserDataLength, v4);
case 0x15:
return SmProcessSystemStoreTrimRequest(*((VOID **)&UserData + 1), (unsigned int)UserDataLength, v4);
default:
return -1073741821;
}
return result;
}Referenced by:
NtSetSystemInformation