PopDiagQueryDevicePropertyString

__int64 __fastcall PopDiagQueryDevicePropertyString(
        PDEVICE_OBJECT DeviceObject,
        DEVICE_REGISTRY_PROPERTY DeviceProperty,
        __int64 a3){
  NTSTATUS v6; 
  void *PoolWithTag; 
  __int16 v8; 
  int ResultLength[10]; 
  SIZE_T NumberOfBytes; 
  LODWORD(NumberOfBytes) = 0;
  ResultLength[0] = 0;
  v6 = IoGetDeviceProperty(DeviceObject, DeviceProperty, 0, 0i64, (PULONG)&NumberOfBytes);
  if( v6 == -1073741789 )
  {
    if( (unsigned int)NumberOfBytes <= 0xFFFF )
    {
      PoolWithTag = ExAllocatePoolWithTag(PagedPool, (unsigned int)NumberOfBytes, 0x67696450ui64);
      if( PoolWithTag )
      {
        v6 = IoGetDeviceProperty(DeviceObject, DeviceProperty, NumberOfBytes, PoolWithTag, (PULONG)ResultLength);
        if( v6 >= 0 )
        {
          *(_WORD *)a3 = ResultLength[0];
          v8 = NumberOfBytes;
          *(_QWORD *)(a3 + 8) = PoolWithTag;
          PoolWithTag = 0i64;
          *(_WORD *)(a3 + 2) = v8;
        }
        if( PoolWithTag )
          ExFreePoolWithTag(PoolWithTag, 0x67696450u);
      }
      else
      {
        return(unsigned int)-1073741670;
      }
    }
    else
    {
      return(unsigned int)-2147483643;
    }
  }
  return(unsigned int)v6;
}

Referenced by:

PopDiagTraceFxComponentAccounting
PopDiagTraceFxDeviceAccounting
PopDirectedDripsDiagCreateDeviceDescription