PsGetPermanentSiloContext
NTSTATUS __stdcall PsGetPermanentSiloContext(_EJOB *Silo, UINT64 ContextSlot, VOID **ReturnedSiloContext){
PSP_STORAGE *v3;
__int64 v4;
if( Silo )
v3 = (PSP_STORAGE *)*((_QWORD *)Silo + 163);
else
v3 = Storage;
*ReturnedSiloContext = 0i64;
if( (unsigned int)ContextSlot >= 0x20 )
{
LODWORD(ContextSlot) = ContextSlot - 32;
if( (unsigned int)ContextSlot >= 0x100 )
return -1073741811;
v3 = (PSP_STORAGE *)*((_QWORD *)v3 + 64);
if( !v3 )
return -1073741275;
}
v4 = *(_QWORD *)&v3[4 * (unsigned int)ContextSlot + 2];
if( (v4 & 0xFFFFFFFFFFFFFFFEui64) == 0 )
return -1073741275;
if( (v4 & 1) == 0 )
return -1073741637;
*ReturnedSiloContext = (VOID *)(v4 & 0xFFFFFFFFFFFFFFFEui64);
return 0;
}Referenced by:
CmCleanupServerSiloState
CmGetRootKeyObjectForSilo
CmLockKeyForWrite
CmpGetOrCreateContextForSiloNoRef
CmpGetRegistryNamespaceRootForSilo
ObGetSiloRootDirectoryPath
ObInitServerSilo
ObpLookupObjectName
VRegEnabledInJob
VrpHandleIoctlCreateMultipleNamespaceNodes
VrpHandleIoctlCreateNamespaceNode
VrpHandleIoctlLoadDifferencingHive
VrpHandleIoctlUnloadDynamicallyLoadedHives