### Method

# Gio Vfs register_uri_scheme

since: 2.50

#### Declaration

    gboolean
    g_vfs_register_uri_scheme (
      GVfs* vfs,
      const char* scheme,
      GVfsFileLookupFunc uri_func,
      gpointer uri_data,
      GDestroyNotify uri_destroy,
      GVfsFileLookupFunc parse_name_func,
      gpointer parse_name_data,
      GDestroyNotify parse_name_destroy
    )

#### Description

Registers `uri_func` and `parse_name_func` as the `GFile` URI and parse name lookup functions for URIs with a scheme matching `scheme`. Note that `scheme` is registered only within the running application, as opposed to desktop-wide as it happens with GVfs backends.

When a `GFile` is requested with an URI containing `scheme` (e.g. through g_file_new_for_uri()), `uri_func` will be called to allow a custom constructor. The implementation of `uri_func` should not be blocking, and must not call `g_vfs_register_uri_scheme()` or g_vfs_unregister_uri_scheme().

When `g_file_parse_name()` is called with a parse name obtained from such file, `parse_name_func` will be called to allow the `GFile` to be created again. In that case, it’s responsibility of `parse_name_func` to make sure the parse name matches what the custom `GFile` implementation returned when `g_file_get_parse_name()` was previously called. The implementation of `parse_name_func` should not be blocking, and must not call `g_vfs_register_uri_scheme()` or g_vfs_unregister_uri_scheme().

It’s an error to call this function twice with the same scheme. To unregister a custom URI scheme, use g_vfs_unregister_uri_scheme().

Available since: 2.50

#### Parameters

`scheme`

  Type: `const char*`

  An URI scheme, e.g. “http”

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

`uri_func`

  Type: `GVfsFileLookupFunc`

  A `GVfsFileLookupFunc`.

  The argument can be `NULL`.

`uri_data`

  Type: `gpointer`

  Custom data passed to be passed to `uri_func`, or `NULL`.

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

`uri_destroy`

  Type: `GDestroyNotify`

  Function to be called when unregistering the URI scheme, or when `vfs` is disposed, to free the resources used by the URI lookup function.

  The argument can be `NULL`.

`parse_name_func`

  Type: `GVfsFileLookupFunc`

  A `GVfsFileLookupFunc`.

  The argument can be `NULL`.

`parse_name_data`

  Type: `gpointer`

  Custom data passed to be passed to `parse_name_func`, or `NULL`.

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

`parse_name_destroy`

  Type: `GDestroyNotify`

  Function to be called when unregistering the URI scheme, or when `vfs` is disposed, to free the resources used by the parse name lookup function.

  The argument can be `NULL`.

#### Return value

Type: `gboolean`

`TRUE` if `scheme` was successfully registered, or `FALSE` if a handler for `scheme` already exists.