PopDiagQueryDevicePropertyString

NTSTATUS __stdcall PopDiagQueryDevicePropertyString(
        PDEVICE_OBJECT DeviceObject,
        _DEVICE_REGISTRY_PROPERTY DeviceProperty){
  __int64 v2; 
  __int64 v3; 
  int v6; 
  VOID **PoolWithTag; 
  __int16 v8; 
  __int64 ResultLength[5]; 
  UINT64 NumberOfBytes; 

  LODWORD(NumberOfBytes) = 0;
  v3 = v2;
  LODWORD(ResultLength[0]) = 0;
  v6 = IoGetDeviceProperty(DeviceObject, DeviceProperty, 0i64, 0i64, &NumberOfBytes);
  if( v6 == -1073741789 )
  {
    if( (unsigned int)NumberOfBytes <= 0xFFFF )
    {
      PoolWithTag = ExAllocatePoolWithTag(1ui64, (unsigned int)NumberOfBytes, 1734960208i64);
      if( PoolWithTag )
      {
        v6 = IoGetDeviceProperty(
               DeviceObject,
               DeviceProperty,
               (unsigned int)NumberOfBytes,
               PoolWithTag,
               (UINT64 *)ResultLength);
        if( v6 >= 0 )
        {
          *(_WORD *)v3 = ResultLength[0];
          v8 = NumberOfBytes;
          *(_QWORD *)(v3 + 8) = PoolWithTag;
          PoolWithTag = 0i64;
          *(_WORD *)(v3 + 2) = v8;
        }
        if( PoolWithTag )
          ExFreePoolWithTag(PoolWithTag, 0x67696450u);
      }
      else
      {
        return -1073741670;
      }
    }
    else
    {
      return -2147483643;
    }
  }
  return v6;
}

Referenced by:

PopDiagTraceFxComponentAccounting
PopDiagTraceFxDeviceAccounting
PopDirectedDripsDiagCreateDeviceDescription