What is the difference between full_backward_pre_hook and full_backward_hook?

hi. I am dealing with register_full_backward_pre_hook and register_full_backward_hook to change gradient values while backward stages.

what I am trying is like below
receive input gradient → multiply value to a input gradient(backward pre hook) → calculate param gradient w.r.t input gradient → devide value to a output gradient(backward hook)

is this a right understanding? is this a correct way to do this? thanks in advance