SmcProcessResizeRequest

NTSTATUS __stdcall SmcProcessResizeRequest(
        _SMC_CACHE_MANAGER *CacheMgr,
        VOID *UserData,
        UINT64 UserDataLength,
        INT8 RequestorMode){
  NTSTATUS result; 
  __int64 v7; 
  unsigned int v8; 
  _SMC_STORE_RESIZE_REQUEST Request; 

  memset(&Request, 0, sizeof(Request));
  if( (_DWORD)UserDataLength != 20 )
    return -1073741306;
  if( RequestorMode )
  {
    if( ((unsigned __int8)UserData & 3) != 0 )
      ExRaiseDatatypeMisalignment();
    v7 = 0x7FFFFFFF0000i64;
    if( (unsigned __int64)UserData < 0x7FFFFFFF0000i64 )
      v7 = (__int64)UserData;
    *(_BYTE *)v7 = *(_BYTE *)v7;
    *(_BYTE *)(v7 + 19) = *(_BYTE *)(v7 + 19);
  }
  *(_OWORD *)&Request._bf_0 = *(_OWORD *)UserData;
  v8 = *((_DWORD *)UserData + 4);
  Request.RegionCount = v8;
  if( LOBYTE(Request._bf_0) != 1 )
    return -1073741735;
  if( (Request._bf_0 & 0xFFFFFE00) != 0 || !v8 || Request.StoreManagerType >= SmStoreManagerTypeMax )
    return -1073741811;
  result = SmcStoreResize(CacheMgr, &Request);
  if( result >= 0 )
  {
    *(_SMC_STORE_RESIZE_REQUEST *)UserData = Request;
    return 0;
  }
  return result;
}

Referenced by:

SmSetStoreInformation