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