Quite odd, to have to mix all the memory management rules and conventions. Using C APIs in managed code, but you have to extent the API to deal with the external memory rules and conventions. So that you don´t have to complicate the API to copy data around, that might be kept simple with pointers and memory ownership passing.
I am fixing up the old API usage and getting the delegates and events to work with the async results form the builder. But after having to set up my old laptop, I am sort of slacking at the moment, thinking about heading to bed and just tackling this tomorrow night.