SmSetStoreInformation
NTSTATUS __stdcall SmSetStoreInformation(PVOID SystemInformation, UINT64 SystemInformationLength, INT8 PreviousMode){
INT8 v3;
char v4;
__int128 UserData;
UINT64 UserDataLength;
v4 = v3;
if( PreviousMode != 24 )
return -1073741820;
UserData = *(_OWORD *)SystemInformationLength;
UserDataLength = *(_QWORD *)(SystemInformationLength + 16);
if( (unsigned int)*(_OWORD *)SystemInformationLength != 1 )
return -1073741811;
if( !SeSinglePrivilegeCheck(*(_QWORD *)&SeProfileSingleProcessPrivilege, v3) )
return -1073741790;
if( SDWORD1(UserData) <= 12 )
{
switch( DWORD1(UserData) )
{
case 0xC:
return SmcProcessStoreDeleteRequest((INT64)&qword_140D231C0, *((__int128 **)&UserData + 1), UserDataLength, v4);
case 3:
return SmProcessCreateRequest((INT64)&SmGlobals, *((UINT64 *)&UserData + 1), (unsigned int)UserDataLength, v4);
case 4:
return SmProcessDeleteRequest((INT64)&SmGlobals, *((INT64 **)&UserData + 1), (unsigned int)UserDataLength, v4);
case 9:
return SmcProcessCreateRequest(
(__int64)&qword_140D231C0,
*((unsigned __int64 *)&UserData + 1),
UserDataLength,
v4);
case 0xA:
return SmcProcessDeleteRequest((__int64)&qword_140D231C0, *((__int64 **)&UserData + 1), UserDataLength, v4);
case 0xB:
return SmcProcessStoreCreateRequest(
(__int64)&qword_140D231C0,
*((unsigned __int64 *)&UserData + 1),
UserDataLength,
v4);
}
return -1073741821;
}
if( DWORD1(UserData) == 17 )
return SmProcessResizeRequest((INT64)&SmGlobals, *((INT64 *)&UserData + 1), (unsigned int)UserDataLength, v4);
if( DWORD1(UserData) != 18 )
{
switch( DWORD1(UserData) )
{
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);
}
return -1073741821;
}
return SmcProcessResizeRequest((INT64)&qword_140D231C0, *((UINT64 *)&UserData + 1), (unsigned int)UserDataLength, v4);
}Referenced by:
NtSetSystemInformation