Exemplo n.º 1
0
LiveCapture *MainWindow::OnInjectTrigger(uint32_t PID, const QList<EnvironmentModification> &env,
                                         const QString &name, CaptureOptions opts)
{
  if(!PromptCloseLog())
    return NULL;

  QString logfile = m_Ctx->TempLogFilename(name);

  void *envList = RENDERDOC_MakeEnvironmentModificationList(env.size());

  for(int i = 0; i < env.size(); i++)
    RENDERDOC_SetEnvironmentModification(envList, i, env[i].variable.toUtf8().data(),
                                         env[i].value.toUtf8().data(), env[i].type, env[i].separator);

  uint32_t ret = RENDERDOC_InjectIntoProcess(PID, envList, logfile.toUtf8().data(), &opts, false);

  RENDERDOC_FreeEnvironmentModificationList(envList);

  if(ret == 0)
  {
    RDDialog::critical(this, tr("Error kicking capture"),
                       tr("Error injecting into process %1 for capture.\n\nCheck diagnostic log in "
                          "Help menu for more details.")
                           .arg(PID));
    return NULL;
  }

  LiveCapture *live = new LiveCapture(m_Ctx, "", ret, this, this);
  ShowLiveCapture(live);
  return live;
}
Exemplo n.º 2
0
uint32_t RenderManager::ExecuteAndInject(const QString &exe, const QString &workingDir,
                                         const QString &cmdLine,
                                         const QList<EnvironmentModification> &env,
                                         const QString &logfile, CaptureOptions opts)
{
  // if (m_Remote == null)
  {
    void *envList = RENDERDOC_MakeEnvironmentModificationList(env.size());

    for(int i = 0; i < env.size(); i++)
      RENDERDOC_SetEnvironmentModification(envList, i, env[i].variable.toUtf8().data(),
                                           env[i].value.toUtf8().data(), env[i].type,
                                           env[i].separator);

    uint32_t ret = RENDERDOC_ExecuteAndInject(exe.toUtf8().data(), workingDir.toUtf8().data(),
                                              cmdLine.toUtf8().data(), envList,
                                              logfile.toUtf8().data(), &opts, false);

    RENDERDOC_FreeEnvironmentModificationList(envList);

    return ret;
  }
  /*
  else
  {
  }
  */
}