### Function

# Gio DBusSubtreeIntrospectFunc

since: 2.26

#### Declaration

    GDBusInterfaceInfo**
    (* GDBusSubtreeIntrospectFunc) (
      GDBusConnection* connection,
      const gchar* sender,
      const gchar* object_path,
      const gchar* node,
      gpointer user_data
    )

#### Description

The type of the `introspect` function in `GDBusSubtreeVTable`.

Subtrees are flat. `node`, if non-`NULL`, is always exactly one segment of the object path (ie: it never contains a slash).

This function should return `NULL` to indicate that there is no object at this node.

If this function returns non-`NULL`, the return value is expected to be a `NULL`-terminated array of pointers to `GDBusInterfaceInfo` structures describing the interfaces implemented by `node`. This array will have `g_dbus_interface_info_unref()` called on each item before being freed with g_free().

The difference between returning `NULL` and an array containing zero items is that the standard DBus interfaces will returned to the remote introspector in the empty array case, but not in the `NULL` case.

Available since: 2.26

#### Parameters

`connection`

  Type: `GDBusConnection`

  A `GDBusConnection`.

  The data is owned by the caller of the function.

`sender`

  Type: `const gchar*`

  The unique bus name of the remote caller.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`object_path`

  Type: `const gchar*`

  The object path that was registered with g_dbus_connection_register_subtree().

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`node`

  Type: `const gchar*`

  A node that is a child of `object_path` (relative to `object_path`) or `NULL` for the root of the subtree.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`user_data`

  Type: `gpointer`

  The `user_data` #gpointer passed to g_dbus_connection_register_subtree().

  The argument can be `NULL`.
  The data is owned by the caller of the function.

#### Return value

Type: An array of `GDBusInterfaceInfo*`

A `NULL`-terminated array of pointers to `GDBusInterfaceInfo`, or `NULL`.

The array is `NULL`-terminated.
The caller of the function takes ownership of the data, and is responsible for freeing it.
The return value can be `NULL`.