KseQueryDeviceData

INT64 __fastcall KseQueryDeviceData(_SECTION *Section, VOID *MappedBase, UINT64 LoadFlags){
  UINT64 *v3; 
  UINT64 *v4; 
  int v8; 
  int RegistryDeviceData; 
  _DWORD *v11; 
  void *v12; 
  __int64 v13; 
  PVOID DataBuffer; 
  INT64 a1; 
  PVOID v16; 
  a1 = 0i64;
  v4 = v3;
  if( dword_140C50324 != 2 || (*(_BYTE *)KseEngine & 2) != 0 )
    return(unsigned int)-1073741275;
  if( !MappedBase || !LoadFlags || !v3 )
    return(unsigned int)-1073741811;
  v8 = *(_DWORD *)LoadFlags;
  *(_DWORD *)LoadFlags = 0;
  if( (v8 & 0x20000000) == 0 )
  {
    RegistryDeviceData = KsepDbQueryRegistryDeviceData(
                           (PWCHAR)Section,
                           (PWCHAR)MappedBase,
                           (UINT64 *)LoadFlags,
                           v3,
                           v16);
    if( RegistryDeviceData != -1073741275 )
      goto LABEL_14;
  }
  if( (unsigned int)KsepShimDbChanged() )
  {
    KseResetDeviceCache();
  }
  else
  {
    RegistryDeviceData = KsepDbCacheQueryDevice((WCHAR *)Section, (WCHAR *)MappedBase, (UINT64 *)LoadFlags, v4, v16);
    if( RegistryDeviceData != -1073741275 )
      goto LABEL_14;
  }
  RegistryDeviceData = KsepDbCacheReadDevice((WCHAR *)Section, (CHAR **)&a1);
  if( RegistryDeviceData < 0 )
    return(unsigned int)RegistryDeviceData;
  v11 = (_DWORD *)LoadFlags;
  v12 = (void *)a1;
  RegistryDeviceData = KsepDbCacheQueryDeviceData(a1, (const WCHAR *)MappedBase, v11, v4, (UINT8 *)v16);
  if( (int)KsepDbCacheInsertDevice((WCHAR *)Section, (INT64)v12) < 0 )
    KsepCacheDeviceFree(v12);
LABEL_14:
  if( RegistryDeviceData >= 0 )
  {
    if( !*(_DWORD *)v4 )
      RegistryDeviceData = -1073741275;
    v13 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryMessagesIndex, 1u) + 1) & 0x3F;
    HIDWORD(KsepHistoryMessages[v13]) = 0;
    LODWORD(KsepHistoryMessages[v13]) = 592101;
    if( (KsepDebugFlag & 1) != 0 )
    {
      LODWORD(DataBuffer) = RegistryDeviceData;
      KsepDebugPrint(0i64, "KSE: Query device [%ws, %ws]: found in cache %08x\n", MappedBase, Section, DataBuffer);
    }
    LODWORD(DataBuffer) = RegistryDeviceData;
    KsepLogInfo(0, "KSE: Query device [%ws, %ws]: found in cache %08x\n", MappedBase, Section, DataBuffer);
  }
  return(unsigned int)RegistryDeviceData;
}

Referenced by:

ExpGetDeviceDataInformation
KseQueryDeviceFlags