Из того, что я обнаружил (и один из подходов, которые Xamarin использует внутри своей структуры), решение выглядит следующим образом:
static extern CGImagePixelFormatInfo CGImageGetPixelFormatInfo (/* __nullable CGImageRef */ IntPtr handle);
static extern IntPtr /* CFStringRef */ CGImageGetUTType (/* __nullable CGImageRef* */ IntPtr image);
Итак, из-за C# управляемой архитектуры, нет явных указателей для реализации, поэтому они просто не создали * классы, похожие на ссылки в Mono.
Единственное, на что следует указать, это то, что они пропускают IntPtr
для обоих случаев: CGImageRef
и CGImageRef*
, что, конечно, имеет смысл. Однако хитрость заключается в том, чтобы правильно передать указатель CGImage внутри вызывающего метода, потому что в первом случае это должно быть так:
image == null ? IntPtr.Zero : image.Handle
, так, передав указатель CGImage. Но во втором случае это должен быть указатель на Handle, я полагаю.