PsGetNextPartitionUnsafe
NTSTATUS __stdcall PsGetNextPartitionUnsafe(PVOID Object){
NTSTATUS v2;
KIRQL v3;
void **v4;
unsigned __int64 v5;
v2 = 0;
v3 = ExAcquireSpinLockShared(&PspActivePartitionListLock);
v4 = (void **)PspActivePartitionListHead;
v5 = v3;
if( Object )
v4 = (void **)*((_QWORD *)Object + 5);
while( v4 != &PspActivePartitionListHead )
{
if( ObReferenceObjectSafeWithTag(v4 - 5, 0x6E457350ui64) )
{
v2 = (_DWORD)v4 - 40;
break;
}
v4 = (void **)*v4;
}
ExReleaseSpinLockSharedFromDpcLevel(&PspActivePartitionListLock);
__writecr8(v5);
if( Object )
ObfDereferenceObjectWithTag(Object, 0x6E457350ui64);
return v2;
}Referenced by:
CcForEachPartition
CcUnmapInactiveViews
ExSwapinWorkerThreads
PsGetNextPartition