Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon
custloc_desc_t Struct Reference

Description of a custom argloc. More...

#include <typeinf.hpp>

Public Attributes

size_t cbsize
 size of this structure
 
const char * name
 name of the custom argloc type. must be unique
 
void(idaapi * copy )(argloc_t *empty_dst, const argloc_t &src)
 Copy src into empty_dst.
 
void(idaapi * cleanup )(argloc_t *loc)
 Clear contents of loc before it is modified (may be nullptr)
 
bool(idaapi * verify )(const argloc_t &loc, int size, const rangeset_t *gaps, bool part_of_scattered)
 May be nullptr.
 
int(idaapi * compare )(const argloc_t &a, const argloc_t &b)
 Lexical comparison of two arglocs.
 
size_t(idaapi * print )(char *buf, size_t bufsize, const argloc_t &loc, asize_t size, int praloc_flags)
 Get textual description of the location (not the value at the location!)
 
bool(idaapi * deref_field )(argloc_t *out, tinfo_t *tif, const argloc_t &strloc, const tinfo_t &struct_tif, asize_t off, const qstring &name)
 Dereference the struct/union pointed by 'strloc': take member at offset 'off' (or use the field name), improve member 'tif' if necessary.
 
bool(idaapi * deref_array )(argloc_t *out, tinfo_t *tif, const argloc_t &arrloc, const tinfo_t &array_tif, asize_t n, asize_t elsize)
 Dereference the array pointed by 'arrloc': take member number 'n' (element size is 'elsize'), improve member 'tif' if necessary.
 
bool(idaapi * deref_ptr )(argloc_t *out, tinfo_t *tif, const argloc_t &ptrloc)
 Dereference the pointer at 'loc': retrieve location of the pointed object, improve 'tif' of the pointed object if necessary.
 
bool(idaapi * read_value )(value_union_t *value, const argloc_t &loc, int size, const tinfo_t &tif)
 Read the pointer at 'loc': retrieve value of a simple object. More...
 
bool(idaapi * write_value )(const argloc_t &loc, const idc_value_t &idcv, const value_union_t &scalar_value, int size, qstring *errbuf)
 Update value at 'loc'. More...
 
asize_t(idaapi * calc_string_length )(const argloc_t &loc, const tinfo_t &string_tif)
 Calc max natural string length at 'loc' in the debugged process memory.
 
bool(idaapi * get_string )(qstring *out, tinfo_t *elem_tif, const argloc_t &loc, const tinfo_t &string_tif, size_t len)
 Retrieve string at 'loc' from the debugged process memory, returns quoted string value.
 
asize_t(idaapi * guess_array_size )(const argloc_t &loc, const tinfo_t &array_tif)
 Retrieve size of array at 'loc' (number of elements)
 
bool(idaapi * get_tinfo )(tinfo_t *out, const argloc_t &loc)
 Retrieve type of the object at 'loc'.
 
int(idaapi * calc_number_of_children )(const argloc_t &loc, const tinfo_t &tif)
 Calculate the number of children for the given location. More...
 
size_t(idaapi * print_ptr_value )(char *buf, size_t bufsize, bool *is_valid_ptr, const argloc_t &loc, const tinfo_t &tif)
 Get string containing a printable representation of the pointer at 'loc'. More...
 

Detailed Description

Description of a custom argloc.

Custom arglocs can be added by plugins in order to describe the locations unsupported by the ida kernel.

Member Data Documentation

◆ read_value

bool(idaapi * custloc_desc_t::read_value) (value_union_t *value, const argloc_t &loc, int size, const tinfo_t &tif)

Read the pointer at 'loc': retrieve value of a simple object.

the object value must fit value_union_t.

◆ write_value

bool(idaapi * custloc_desc_t::write_value) (const argloc_t &loc, const idc_value_t &idcv, const value_union_t &scalar_value, int size, qstring *errbuf)

Update value at 'loc'.

if idcv is VT_LONG/VT_INT64/VT_FLOAT, the value in native format is copied to 'scalar_value' for your convenience. otherwise please use 'idcv' and not 'scalar_value'.

◆ calc_number_of_children

int(idaapi * custloc_desc_t::calc_number_of_children) (const argloc_t &loc, const tinfo_t &tif)

Calculate the number of children for the given location.

(arrays, structs, ptrs may have children and therefore be expanded)

◆ print_ptr_value

size_t(idaapi * custloc_desc_t::print_ptr_value) (char *buf, size_t bufsize, bool *is_valid_ptr, const argloc_t &loc, const tinfo_t &tif)

Get string containing a printable representation of the pointer at 'loc'.

Returns the number of characters printed. May be nullptr.


The documentation for this struct was generated from the following file: