ObInitServerSilo
NTSTATUS __stdcall ObInitServerSilo(_EJOB *Silo){
_EJOB *v2;
_ESERVERSILO_GLOBALS *ServerSiloGlobals;
_OBJECT_NAMESPACE_LOOKUPTABLE *p_PrivateNamespaceLookupTable;
__int64 v5;
NTSTATUS result;
int v7;
_ADAPTER_OBJECT *v8;
_OBJECT_TYPE *ObjectType;
_KPROCESSOR_MODE AccessMode;
_OBJECT_ATTRIBUTES ObjectAttributes;
UINT64 Handle;
PVOID ReturnedSiloContext;
PADAPTER_OBJECT a7;
a7 = 0i64;
*(&ObjectAttributes.Length + 1) = 0;
*(&ObjectAttributes.Attributes + 1) = 0;
Handle = 0i64;
ReturnedSiloContext = 0i64;
ServerSiloGlobals = PsGetServerSiloGlobals(Silo);
ServerSiloGlobals->ObSiloState.DeviceMapLock._bf_0 = 0i64;
p_PrivateNamespaceLookupTable = &ServerSiloGlobals->ObSiloState.PrivateNamespaceLookupTable;
ServerSiloGlobals->ObSiloState.PrivateNamespaceLookupTable.Lock._bf_0 = 0i64;
v5 = 37i64;
do
{
p_PrivateNamespaceLookupTable->HashBuckets[0].Blink = (_LIST_ENTRY *)p_PrivateNamespaceLookupTable;
p_PrivateNamespaceLookupTable->HashBuckets[0].Flink = (_LIST_ENTRY *)p_PrivateNamespaceLookupTable;
p_PrivateNamespaceLookupTable = (_OBJECT_NAMESPACE_LOOKUPTABLE *)((char *)p_PrivateNamespaceLookupTable + 16);
--v5;
}
while( v5 );
if( PsIsHostSilo(v2) )
return 0;
result = PsGetPermanentSiloContext(Silo, (unsigned int)PsObjectDirectorySiloContextSlot, &ReturnedSiloContext);
if( result >= 0 )
{
LOBYTE(AccessMode) = 0;
result = ObOpenObjectByPointer(ReturnedSiloContext, 0x240ui64, 0i64, 2, DmaAdapter, AccessMode, (VOID **)&Handle);
if( result >= 0 )
{
ObjectAttributes.RootDirectory = (void *)Handle;
ObjectAttributes.Length = 48;
ObjectAttributes.ObjectName = (_UNICODE_STRING *)&ObpGlobalDirectoryName;
ObjectAttributes.Attributes = 576;
LOBYTE(ObjectType) = 0;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
v7 = ObReferenceObjectByNameEx(&ObjectAttributes, 0i64, (_OBJECT_TYPE *)2, (CHAR)DmaAdapter, ObjectType, 0i64);
ZwClose(Handle);
if( v7 < 0 )
return v7;
v8 = a7;
ServerSiloGlobals->ObSiloState.SystemDeviceMap = (_DEVICE_MAP *)a7->MapRegisterMdlLock;
HalPutDmaAdapter(v8);
return 0;
}
}
return result;
}Referenced by:
ObInitSystem
PspInitializeServerSiloDeferred