PspSiloInitializeUserSharedData

NTSTATUS __stdcall PspSiloInitializeUserSharedData(_EJOB *Silo){
  NTSTATUS result; 
  _ADAPTER_OBJECT *v3; 
  int v4; 
  _ESERVERSILO_GLOBALS *ServerSiloGlobals; 
  _EJOB *v6; 
  _EJOB *v7; 
  __int64 v8; 
  NTSTATUS NtProductTypeFromRegistry; 
  __int64 v10; 
  INT64 v11; 
  _SILO_USER_SHARED_DATA *UserSharedData; 
  UINT64 v13; 
  UINT64 v14; 
  PVOID SectionObject; 
  VOID *MappedBase; 
  _LARGE_INTEGER InputMaximumSize; 

  MappedBase = 0i64;
  SectionObject = 0i64;
  LODWORD(v14) = 0x8000000;
  LODWORD(v13) = 4;
  InputMaximumSize.QuadPart = 624i64;
  result = MmCreateSection(&SectionObject, 0xF001Fui64, 0i64, &InputMaximumSize, v13, v14, 0i64, 0i64);
  if( result >= 0 )
  {
    v3 = (_ADAPTER_OBJECT *)SectionObject;
    InputMaximumSize.QuadPart = 0i64;
    v4 = MmMapViewInSystemSpace(SectionObject, &MappedBase, (UINT64 *)&InputMaximumSize.QuadPart);
    if( v4 >= 0 )
    {
      ServerSiloGlobals = PsGetServerSiloGlobals(Silo);
      ServerSiloGlobals->UserSharedData = (_SILO_USER_SHARED_DATA *)MappedBase;
      ServerSiloGlobals->UserSharedSection = v3;
      LODWORD(v6) = PsAttachSiloToCurrentThread((INT64)Silo);
      v7 = v6;
      ServerSiloGlobals->UserSharedData->ServiceSessionId = -1;
      NtProductTypeFromRegistry = PspSiloInitializeSystemRootBuffer((INT64)Silo);
      if( NtProductTypeFromRegistry >= 0 )
      {
        UserSharedData = ServerSiloGlobals->UserSharedData;
        LODWORD(SectionObject) = 0;
        NtProductTypeFromRegistry = RtlpGetNtProductTypeFromRegistry(&SectionObject, v8, v10, v11);
        if( NtProductTypeFromRegistry >= 0 )
          UserSharedData->NtProductType = (int)SectionObject;
        if( NtProductTypeFromRegistry >= 0 )
        {
          NtProductTypeFromRegistry = PspSiloInitializeSuiteMask(ServerSiloGlobals->UserSharedData);
          if( NtProductTypeFromRegistry >= 0 )
          {
            ServerSiloGlobals->UserSharedData->SharedUserSessionId = -1;
            NtProductTypeFromRegistry = 0;
          }
        }
      }
      PsDetachSiloFromCurrentThread(v7);
      return NtProductTypeFromRegistry;
    }
    else
    {
      HalPutDmaAdapter(v3);
      return v4;
    }
  }
  return result;
}

Referenced by:

PspInitializeServerSiloDeferred