PsGetNextPartitionUnsafe
NTSTATUS __stdcall PsGetNextPartitionUnsafe(PVOID Object){
NTSTATUS v2;
unsigned __int8 v3;
void **v4;
unsigned __int64 v5;
v2 = 0;
v3 = ExAcquireSpinLockShared((INT64 *)((char *)&PspStorageBitmap.OrderedPointer + 4));
v4 = (void **)*(&stru_140C00F40 + 890);
v5 = v3;
if( Object )
v4 = (void **)*((_QWORD *)Object + 5);
while( v4 != (void **)((char *)&stru_140C00F40 + 7120) )
{
if( ObReferenceObjectSafeWithTag((INT64)(v4 - 5), 1850045264i64) )
{
v2 = (_DWORD)v4 - 40;
break;
}
v4 = (void **)*v4;
}
ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)&PspStorageBitmap.OrderedPointer + 1);
__writecr8(v5);
if( Object )
ObfDereferenceObjectWithTag(Object, 0x6E457350ui64);
return v2;
}Referenced by:
CcForEachPartition
CcUnmapInactiveViews
ExSwapinWorkerThreads
PsGetNextPartition