CmpGetCorrectKcbLockOrder
void __fastcall CmpGetCorrectKcbLockOrder(
_CM_KEY_CONTROL_BLOCK *Kcb1,
_CM_KEY_CONTROL_BLOCK *Kcb2,
_CM_KEY_CONTROL_BLOCK **ProperFirstKcb,
_CM_KEY_CONTROL_BLOCK **ProperSecondKcb){
unsigned __int32 v5;
unsigned __int32 v6;
_CM_KEY_CONTROL_BLOCK *v7;
__int16 bf_b8_high;
__int16 LayerHeight;
v5 = ((unsigned __int32)Kcb1->_bf_8 >> 21) & 0x3FF;
v6 = ((unsigned __int32)Kcb2->_bf_8 >> 21) & 0x3FF;
if( v5 <= v6
&& (v5 < v6
|| ((bf_b8_high = HIWORD(Kcb1->_bf_b8), (bf_b8_high & 4) == 0) || (Kcb2->_bf_b8 & 0x20000) == 0)
&& ((bf_b8_high & 2) != 0 && (Kcb2->_bf_b8 & 0x40000) != 0
|| (LayerHeight = Kcb1->LayerHeight, LayerHeight <= Kcb2->LayerHeight)
&& (LayerHeight < Kcb2->LayerHeight || Kcb1 <= Kcb2))) )
{
v7 = Kcb2;
Kcb2 = Kcb1;
}
else
{
v7 = Kcb1;
}
*ProperFirstKcb = Kcb2;
*ProperSecondKcb = v7;
}Referenced by:
CmpIsKcbLockAllowed
CmpLockTwoKcbsShared
CmpUnlockTwoKcbs