KsepDbCacheInsertDevice

NTSTATUS __fastcall KsepDbCacheInsertDevice(WCHAR *SourceString, VOID *InsertObject){
  NTSTATUS v4; 
  _ETHREAD *CurrentThread; 
  _EX_PUSH_LOCK *v6; 
  _EX_PUSH_LOCK *v7; 
  char v8; 
  _QWORD SearchObject[10]; 

  v4 = -1073741811;
  memset(SearchObject, 0i64, 0x48u);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v6 = Cache;
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx(v6, 0i64);
  RtlInitUnicodeString((PUNICODE_STRING)&SearchObject[5], SourceString);
  if( !KsepCacheLookup((_KSE_CACHE *)Cache, SearchObject) )
  {
    KsepCacheInsert((_KSE_CACHE *)Cache, InsertObject);
    v4 = 0;
  }
  v7 = Cache;
  v8 = _InterlockedExchangeAdd64(&Cache->_bf_0, 0xFFFFFFFFFFFFFFFFui64);
  if( (v8 & 2) != 0 && (v8 & 4) == 0 )
    ExfTryToWakePushLock(v7);
  KeAbPostRelease(v7);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  return v4;
}

Referenced by:

KseQueryDeviceData
KseQueryDeviceDataList