Set or delete a parameter on a hook on the same account further down the execution chain

Behaviour

  • Search the hook chain on the hook account for a 32 byte hash indicated by hread_ptr
  • If found: set a parameter:
  • With the parameter name indicated by kread_ptr and
  • The parameter value indicated by read_ptr

Definition

int64_t hook_param_set (
    uint32_t read_ptr,
    uint32_t read_len,
    uint32_t kread_ptr,
    uint32_t kread_len,
    uint32_t hread_ptr,
    uint32_t hread_len  
);

Example

uint8_t pvalue[] = "some parameter value";
uint8_t pname[] = "paramname";
uint8_t phash[] = { 0x19U, 0xFEU, 0x69U, 0xF1U, 0x53U, 0x66U, 0x4EU, 0x8CU, 
                    0x97U, 0xF4U, 0x4CU, 0x5CU, 0x3CU, 0x65U, 0x63U, 0x79U, 
                    0xC2U, 0xD0U, 0x26U, 0xE7U, 0x90U, 0xEFU, 0x38U, 0xF7U, 
                    0xEDU, 0x73U, 0xE9U, 0xCEU, 0x9CU, 0x9DU, 0xBFU, 0x03U };
int64_t result = 
    hook_param_set(pvalue, sizeof(pvalue),
                   pname, sizeof(pname),
                   phash, sizeof(phash));

Parameters

Name

Type

Description

read_ptr

uint32_t

Pointer to parameter value

read_len

uint32_t

Length of the parameter value

kread_ptr

uint32_t

Pointer to the parameter name

kread_len

uint32_t

Length of the parameter name

hread_ptr

uint32_t

Pointer to hook hash

hread_len

uint32_t

Length of hook hash (always 32)

Return Code

Type

Description

int64_t

The length of the parameter value successfully set

If negative, an error:
OUT_OF_BOUNDS

  • pointers/lengths specified outside of hook memory.

TOO_SMALL

  • The parameter name can't be null

TOO_BIG

  • The parameter name is greater than 32 bytes