KsepDbCacheQueryDevice

NTSTATUS __stdcall KsepDbCacheQueryDevice(
        WCHAR *DeviceId,
        WCHAR *DataName,
        UINT64 *DataType,
        UINT64 *DataBufferLength,
        VOID *DataBuffer){
  NTSTATUS DeviceData; 
  _ETHREAD *CurrentThread; 
  _EX_PUSH_LOCK *v11; 
  VOID *v12; 
  _EX_PUSH_LOCK *v13; 
  char v14; 
  _QWORD SearchObject[10]; 

  DeviceData = -1073741275;
  memset(SearchObject, 0i64, 0x48u);
  RtlInitUnicodeString((PUNICODE_STRING)&SearchObject[5], DeviceId);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v11 = Cache;
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx(v11, 0i64);
  v12 = KsepCacheLookup((_KSE_CACHE *)Cache, SearchObject);
  if( v12 )
    DeviceData = KsepDbCacheQueryDeviceData(
                   (__int64)v12,
                   DataName,
                   DataType,
                   (unsigned int *)DataBufferLength,
                   DataBuffer);
  v13 = Cache;
  v14 = _InterlockedExchangeAdd64(&Cache->_bf_0, 0xFFFFFFFFFFFFFFFFui64);
  if( (v14 & 2) != 0 && (v14 & 4) == 0 )
    ExfTryToWakePushLock(v13);
  KeAbPostRelease(v13);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  return DeviceData;
}

Referenced by:

KseQueryDeviceData