MmUnloadSystemImage

NTSTATUS __stdcall MmUnloadSystemImage(VOID *ImageHandle){
  _EJOB *v2; 
  char v3; 
  PKINTERRUPT_ROUTINE **v4; 
  INT64 v5; 
  PKINTERRUPT_ROUTINE *v6; 
  _ETHREAD *Lock; 
  INT64 v9; 
  _EJOB *v10; 

  v2 = 0i64;
  v3 = 0;
  if( PsGetCurrentServerSiloGlobals((_KSPIN_LOCK *)ImageHandle)->IsDownlevelContainer )
  {
    LODWORD(v9) = HalSystemVectorDispatchEntry(v5, v4, v6);
    LODWORD(v10) = PsAttachSiloToCurrentThread(v9);
    v2 = v10;
    v3 = 1;
  }
  Lock = MmAcquireLoadLock(v5, (INT8)v4);
  MiUnloadSystemImage(ImageHandle, 0xFFFFFFFFui64);
  MmReleaseLoadLock(Lock);
  if( v3 )
    PsDetachSiloFromCurrentThread(v2);
  return 0;
}

Referenced by:

IopDeleteDriver
IopLoadDriver
MiLoadImportDll
MiSessionUnloadAllImages
NtSetSystemInformation
PnprLoadPluginDriver