PspInitializeSiloStructures
UINT8 __stdcall PspInitializeSiloStructures(){
VOID **PoolWithTag;
UINT64 v2;
_ADAPTER_OBJECT *v3;
_OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x270ui64, 1198287187i64);
qword_140D239A8 = (INT64)PoolWithTag;
if( !PoolWithTag )
return 0;
memset(PoolWithTag, 0i64, 0x270u);
if( PspSiloInitializeSharedUserSessionId(qword_140D239A8) < 0
|| PspStorageAllocSlot(&PsObjectDirectorySiloContextSlot) < 0 )
{
return 0;
}
if( PspStorageAllocSlot(&PsObjectDirectoryTeardownSlot) < 0 )
{
v2 = (unsigned int)PsObjectDirectorySiloContextSlot;
LABEL_13:
PspStorageFreeSlot(v2);
return 0;
}
if( PspStorageAllocSlot(&PsSystemRootSiloContextSlot) < 0 )
{
PspStorageFreeSlot((unsigned int)PsObjectDirectorySiloContextSlot);
v2 = (unsigned int)PsObjectDirectoryTeardownSlot;
goto LABEL_13;
}
PspSiloMonitorLock._bf_0 = 0i64;
qword_140C1DEB8 = (__int64)&PspSiloMonitorList;
PspSiloMonitorList = (__int64)&PspSiloMonitorList;
memset(&ObjectTypeInitializer, 0i64, sizeof(ObjectTypeInitializer));
ObjectTypeInitializer._bf_0 |= 0x84u;
ObjectTypeInitializer.Length = 120;
ObjectTypeInitializer.GenericMapping.GenericRead = 0x20000;
ObjectTypeInitializer.GenericMapping.GenericWrite = 0x20000;
ObjectTypeInitializer.GenericMapping.GenericExecute = 0x20000;
ObjectTypeInitializer.PoolType = PagedPool;
ObjectTypeInitializer.GenericMapping.GenericAll = 983040;
ObjectTypeInitializer.ValidAccessMask = 983040;
ObjectTypeInitializer.DeleteProcedure = (void(__fastcall *)(void *))PspDeleteSiloContext;
if( ObCreateObjectType(
(_UNICODE_STRING *)&PspSiloStoragePagedTypeName,
&ObjectTypeInitializer,
0i64,
(_OBJECT_TYPE **)&PsSiloContextPagedType) >= 0 )
{
ObjectTypeInitializer.PoolType = NonPagedPoolNx;
if( ObCreateObjectType(
(_UNICODE_STRING *)&PspSiloStorageNonPagedTypeName,
&ObjectTypeInitializer,
0i64,
(_OBJECT_TYPE **)&PsSiloContextNonPagedType) < 0 )
{
v3 = PsSiloContextPagedType;
}
else
{
if( PspAllocStorage(&Storage) >= 0 )
return 1;
HalPutDmaAdapter(PsSiloContextPagedType);
v3 = PsSiloContextNonPagedType;
}
HalPutDmaAdapter(v3);
}
return 0;
}Referenced by:
PspInitPhase0