KsepDbQueryRegistryDeviceData

NTSTATUS __stdcall KsepDbQueryRegistryDeviceData(
        PWCHAR DeviceId,
        PWCHAR DataName,
        UINT64 *DataType,
        UINT64 *DataBufferLength,
        PVOID DataBuffer){
  NTSTATUS v8; 
  UINT64 ValueBufferLength; 
  UINT64 ValueType; 
  HANDLE Handle; 
  UINT64 ActualLength; 
  UNICODE_STRING TargetString; 
  *(_QWORD *)&TargetString.Length = 0i64;
  TargetString.Buffer = 0i64;
  Handle = 0i64;
  v8 = KsepStringTransform(&TargetString, DeviceId);
  if( v8 >= 0 )
  {
    if( KsepRegistryOpenKey(
           (PWCHAR)L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Compatibility\\Device",
           TargetString.Buffer,
           &Handle) < 0
      || (ValueBufferLength = *(unsigned int *)DataBufferLength,
          LODWORD(ValueType) = 0,
          ActualLength = ValueBufferLength,
          v8 = KsepRegistryQueryValue(Handle, DataName, &ValueType, DataBuffer, ValueBufferLength, &ActualLength),
          *(_DWORD *)DataBufferLength = ActualLength,
          v8 == -1073741772) )
    {
      v8 = -1073741275;
    }
    else if( v8 >= 0 )
    {
      v8 = 0;
      *(_DWORD *)DataType |= ValueType | 0x10000000;
    }
    if( Handle )
    {
      ZwClose(Handle);
      _InterlockedIncrement(&dword_140C2A7FC);
    }
  }
  KsepStringFree(&TargetString);
  return v8;
}

Referenced by:

KseQueryDeviceData