方法
自 2.26以来
声明 [源代码]
GVariant*
g_dbus_connection_call_sync (
GDBusConnection* connection,
const gchar* bus_name,
const gchar* object_path,
const gchar* interface_name,
const gchar* method_name,
GVariant* parameters,
const GVariantType* reply_type,
GDBusCallFlags flags,
gint timeout_msec,
GCancellable* cancellable,
GError** error
)
描述 [源代码]
同步在远程对象上的interface_name
D-Bus接口调用method_name
方法,该对象由bus_name
拥有。
如果connection
被关闭,则操作将以G_IO_ERROR_CLOSED
失败。如果取消cancellable
,则操作将以G_IO_ERROR_CANCELLED
失败。如果parameters
包含与D-Bus协议不兼容的值,则操作以G_IO_ERROR_INVALID_ARGUMENT
失败。
如果reply_type
非空,则检查回复是否有此类型并触发错误,如果不匹配。换句话说,如果你提供reply_type
,则任何非空返回值都将为此类型。
如果parameters
GVariant
是浮动的,它将被消耗。这允许方便地使用 g_variant_new() ,例如。
g_dbus_connection_call_sync (connection,
"org.freedesktop.StringThings",
"/org/freedesktop/StringThings",
"org.freedesktop.StringThings",
"TwoStrings",
g_variant_new ("(ss)",
"Thing One",
"Thing Two"),
NULL,
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
&error);
调用线程将被阻塞,直到收到回复。请参阅此方法的异步版本g_dbus_connection_call()
。
自 2.26以来
参数
bus_name
-
类型:
const gchar*
一个唯一或已知的总线名称,或如果
connection
不是一个消息总线连接,则为NULL
。此参数可以是 NULL
。数据由方法的调用者所有。 该值是一个以NUL结尾的UTF-8字符串。 object_path
-
类型:
const gchar*
远程对象的路径。
数据由方法的调用者所有。 该值是一个以NUL结尾的UTF-8字符串。 interface_name
-
类型:
const gchar*
在D-Bus接口上调用方法的接口。
数据由方法的调用者所有。 该值是一个以NUL结尾的UTF-8字符串。 method_name
-
类型:
const gchar*
要调用的方法名。
数据由方法的调用者所有。 该值是一个以NUL结尾的UTF-8字符串。 parameters
-
类型:
GVariant
包含方法参数的
GVariant
元组,或者如果不传递参数则为NULL
。此参数可以是 NULL
。数据由方法的调用者所有。 reply_type
-
类型:
GVariantType
回复的预期类型,或
NULL
。此参数可以是 NULL
。数据由方法的调用者所有。 flags
-
类型:
GDBusCallFlags
GDBusCallFlags
枚举中的标志。 timeout_msec
-
类型:
gint
以毫秒为单位的超时时间,-1表示使用默认超时,或
G_MAXINT
表示无超时。 cancellable
-
类型:
GCancellable
一个
GCancellable
或NULL
。此参数可以是 NULL
。数据由方法的调用者所有。 error
-
类型:
GError **
可恢复错误的返回位置。
此参数可以是 NULL
。如果返回位置不是 NULL
,那么您必须将其初始化为NULL
的GError*
。如果没有错误,方法将保留参数的初始化为 NULL
。出错时,参数将被设置为新的 GError
分配;调用者将拥有数据,并负责释放它。
返回值
类型: GVariant
NULL
如果设置了error
。否则是一个具有返回值的非浮动GVariant
元组。使用g_variant_unref()释放。
方法调用者拥有返回的数据,并负责释放它。 |