KseResetDeviceCache

INT64 __fastcall KseResetDeviceCache(){
  _ETHREAD *CurrentThread; 
  UINT64 v1; 
  volatile INT64 *v2; 
  if( dword_140C50324 == 2 )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    v1 = qword_140C50368;
    --*((_WORD *)CurrentThread + 242);
    ExAcquirePushLockExclusiveEx(v1, 0i64);
    KsepCacheReset(qword_140C50368);
    v2 = (volatile INT64 *)qword_140C50368;
    if( (_InterlockedExchangeAdd64((volatile signed __int64 *)qword_140C50368, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock(v2);
    KeAbPostRelease((PVOID)v2);
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  }
  return 0i64;
}

Referenced by:

KseQueryDeviceData
KseQueryDeviceDataList