void InvokeNative(Gnome.Vfs.DNSSDResolveHandle handle, Gnome.Vfs.Result result, Gnome.Vfs.DNSSDService service, string host, int port, System.IntPtr text, int text_raw_len, string text_raw)
        {
            IntPtr native_service  = GLib.Marshaller.StructureToPtrAlloc(service);
            IntPtr native_host     = GLib.Marshaller.StringToPtrGStrdup(host);
            IntPtr native_text_raw = GLib.Marshaller.StringToPtrGStrdup(text_raw);

            native_cb(handle == null ? IntPtr.Zero : handle.Handle, (int)result, native_service, native_host, port, text, text_raw_len, native_text_raw, __data);
            service = Gnome.Vfs.DNSSDService.New(native_service);
            Marshal.FreeHGlobal(native_service);
            GLib.Marshaller.Free(native_host);
            GLib.Marshaller.Free(native_text_raw);
        }
        void InvokeNative(Gnome.Vfs.DNSSDBrowseHandle handle, Gnome.Vfs.DNSSDServiceStatus status, Gnome.Vfs.DNSSDService service)
        {
            IntPtr native_service = GLib.Marshaller.StructureToPtrAlloc(service);

            native_cb(handle == null ? IntPtr.Zero : handle.Handle, (int)status, native_service, __data);
            service = Gnome.Vfs.DNSSDService.New(native_service);
            Marshal.FreeHGlobal(native_service);
        }