What is the right way to prevent a Scheme object referenced by a C object from being garbage collected?

For example, I have a structure:

struct Callback {
      ___SCMOBJ cbfn;
};

where `cbfn' is a procedure defined in Scheme. I want it to be garbage collected only after the Callback object itself is destroyed.

Thanks,

--Vijay