KeRemoveUmsThreadCidOwnership
NTSTATUS __stdcall KeRemoveUmsThreadCidOwnership(INT64 a1, CHAR a2){
_ETHREAD *CurrentThread;
signed __int64 v3;
signed __int64 v4;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
_m_prefetchw((const void *)(a1 + 1272));
v3 = *(_QWORD *)(a1 + 1272);
do
{
v4 = v3;
v3 = _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 1272), v3 & 3, v3);
}
while( v4 != v3 );
if( !a2 || (void *)(v3 & 0xFFFFFFFFFFFFFFFCui64) == CurrentThread->Cid.UniqueThread )
return 0;
else
return -1073740004;
}Referenced by:
KeUpdateUmsThreadState
PspDisassociateUmsThreadFromPrimary