Beispiel #1
0
//--------------------------------------------------------------------------
// input is valid only if n==0
int rpc_debmod_t::dbg_process_get_info(int n, const char *input, process_info_t *info)
{
  qstring cmd = prepare_rpc_packet(RPC_GET_PROCESS_INFO);
  append_long(cmd, n);
  if ( n == 0 )
    append_str(cmd, input);

  rpc_packet_t *rp = process_request(cmd);
  if ( rp == NULL ) return -1;
  const uchar *answer = (uchar *)(rp+1);
  const uchar *end = answer + rp->length;

  bool result = extract_long(&answer, end);
  if ( result )
    extract_process_info(&answer, end, info);
  qfree(rp);
  return result;
}
//--------------------------------------------------------------------------
// input is valid only if n==0
int idaapi rpc_debmod_t::dbg_process_get_info(int n, const char *input, process_info_t *procinf)
{
  bytevec_t req = prepare_rpc_packet(RPC_GET_PROCESS_INFO);
  append_dd(req, n);
  if ( n == 0 )
    append_str(req, input);

  rpc_packet_t *rp = process_request(req);
  if ( rp == NULL )
    return -1;
  const uchar *answer = (uchar *)(rp+1);
  const uchar *end = answer + rp->length;

  bool result = extract_long(&answer, end) != 0;
  if ( result )
    extract_process_info(&answer, end, procinf);

  qfree(rp);
  return result;
}