ExConvertExclusiveToSharedLite

VOID __stdcall ExConvertExclusiveToSharedLite(_ERESOURCE *Resource){
  unsigned __int16 Flag; 
  __int16 v2; 
  unsigned __int8 CurrentIrql; 
  _ETHREAD *CurrentThread; 

  Flag = Resource->Flag;
  if( (Flag & 0x41) == 1 )
    KeBugCheckEx(0x1C6u, (PVOID)0xF, Resource, 0i64, 0i64);
  v2 = Flag & 1;
  if( v2 )
  {
    CurrentIrql = KeGetCurrentIrql();
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    if( CurrentIrql > 1u )
      KeBugCheckEx(0x1C6u, 0i64, (PVOID)CurrentIrql, (PVOID)1, 0i64);
    if( !CurrentIrql && (CurrentThread->Tcb._bf_0 & 0x400) == 0 && !CurrentThread->Tcb.WaitBlock[3].SpareLong )
      KeBugCheckEx(0x1C6u, (PVOID)7, 0i64, 0i64, 0i64);
  }
  if( v2 )
    ExpFastResourceLegacyConvertExclusiveToShared(Resource);
  else
    ExpConvertExclusiveToSharedLite(Resource);
}

Referenced by:

CmpConvertRegistryShared
FsRtlAcquireFileForModWriteEx
NtMapCMFModule
PpDevNodeUnlockTree
PspAllocateAndQueryNotificationChannel