MmDetachSession

NTSTATUS __stdcall MmDetachSession(PVOID OpaqueSession, KAPC_STATE *ApcState){
  __int64 v2; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  v2 = *((_QWORD *)OpaqueSession + 171);
  memset(&LockHandle, 0, sizeof(LockHandle));
  KeAcquireInStackQueuedSpinLock(&WorkerRoutine, &LockHandle);
  --*(_DWORD *)(v2 + 100);
  if( (*(_DWORD *)(v2 + 4) & 2) == 0 || *(_DWORD *)(v2 + 100) )
    v2 = 0i64;
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
  KiUnstackDetachProcess(ApcState, 0i64);
  if( v2 )
    KeSignalGate((_KGATE *)(v2 + 104), 1i64);
  return 0;
}

Referenced by:

CmFcpChangeSubscriptionWrapper
EtwpEnableGuid
EtwpPoolRunDown
EtwpSendDataBlock
ExCallSessionCallBack
ExGetSessionBigPoolInformation
ExGetSessionPoolTagInformation
ExpHpCompactSessionPools
MiEmptyAccessLogs
MiTrimSharedPageFromViews
MiUnlockStealVm
MmEnumerateSystemImages
MmGetSessionMappedViewInformation
MmPrefetchVirtualMemory
ObpProcessRemoveObjectQueue
PnpNotifyDriverCallback
PopLazySensorActiveInput
PopWatchdogWorker
PspChangeProcessExecutionState
PspDetachSession
TtmpSessionWorker
VfThunkApplyMandatoryThunks
VfThunkApplyThunks