NULL is ok, both for passing and for returning.
Parameter points to an array of items.
This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.
Typed errors. Similar to throws in Java.
The callback is valid until first called.
Don't free data after the code is done.