ExAcquireSharedStarveExclusive
UINT8 __stdcall ExAcquireSharedStarveExclusive(ERESOURCE *Resource, UINT8 Wait){
unsigned __int16 Flag;
unsigned __int8 v4;
__int16 v5;
unsigned __int8 CurrentIrql;
_ETHREAD *CurrentThread;
Flag = Resource->Flag;
v4 = 2 - (Wait != 0);
if( (Flag & 0x41) == 1 )
KeBugCheckEx(0x1C6u, 0xFui64, (ULONG_PTR)Resource, 0i64, 0i64);
v5 = Flag & 1;
if( v5 )
{
CurrentIrql = KeGetCurrentIrql();
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
if( CurrentIrql > v4 )
KeBugCheckEx(0x1C6u, 0i64, CurrentIrql, v4, 0i64);
if( CurrentIrql >= 2u && (*((_DWORD *)KeGetPcr() + 3243) & 0x10001) != 0 )
KeBugCheckEx(0x1C6u, 5ui64, 0i64, 0i64, 0i64);
if( (*((_BYTE *)CurrentThread + 192) & 2) != 0 )
KeBugCheckEx(0x1C6u, 6ui64, 0i64, 0i64, 0i64);
if( !CurrentIrql && (*((_DWORD *)CurrentThread + 29) & 0x400) == 0 && !*((_DWORD *)CurrentThread + 121) )
KeBugCheckEx(0x1C6u, 7ui64, 0i64, 0i64, 0i64);
}
if( v5 )
return ExpFastResourceLegacyAcquireSharedStarveExclusive(Resource);
else
return ExpAcquireSharedStarveExclusive(Resource, Wait);
}Referenced by:
CcPinFileData
CcPinMappedData