PsDereferencePartition
VOID __fastcall PsDereferencePartition(INT64 a1){
signed __int64 v2;
bool v3;
signed __int64 v4;
WORK_QUEUE_ITEM *v5;
v2 = _InterlockedExchangeAdd64((volatile signed __int64 *)(a1 + 24), 0xFFFFFFFFFFFFFFFFui64);
v3 = v2 <= 1;
v4 = v2 - 1;
if( v3 )
{
if( v4 )
__fastfail(0xEu);
v5 = (WORK_QUEUE_ITEM *)(a1 + 64);
v5->Parameter = (void *)a1;
v5->List.Flink = 0i64;
v5->WorkerRoutine = (void(__fastcall *)(void *))PspTeardownPartition;
ExQueueWorkItem(v5, DelayedWorkQueue);
}
}Referenced by:
CcGetPartitionWithCreate
EtwpClearPartitionContext
EtwpSetPartitionContext
IopSetFileMemoryPartitionInformation
MiAllocateVirtualMemoryCommon
MiCommitExistingVad
MiContractWsSwapPageFileWorker
MiCreateSection
MiInitializeCreateSectionPacket
MiObtainFreePages
MiQueryAddressState
MiRebalanceZeroFreeLists
MiRebuildLargePages
MiReleaseProcessReferenceToSessionDataPage
MiScanPagefileSpace
MiTrimUnusedPageFileRegionsWorker
MmAllocateVirtualMemory
MmMarkPhysicalMemoryAsBad
MmQueryMemoryListInformation
MmQueryVirtualMemory
NtAllocateVirtualMemory
NtCreatePartition
NtManagePartition
PsGetNextPartition
PsQuitNextPartition
PspAllocatePartition
PspClosePartitionHandle
PspSetJobMemoryPartition
PspTeardownPartition