在 dbus 消息中获取实际类型的变体数据

Get actual type of variant data in dbus message

要对收到的 属性 设置消息进行一些预验证,我需要获取消息数据的类型并将其与 属性.

的类型进行比较

当我试图查看类型(使用 sd_bus_message_peek_type)时,它 returns "v" 这是变体的签名。是否有可能获得包装在变体中的实际数据的签名?以及如何做到这一点?

变体是一个容器,因此需要进入该容器才能获得实际类型。

进入容器是用 sd_bus_message_enter_container 完成的。

进入容器后,下一个要读取的数据是变体包装值。


请注意,可以通过调用 sd_bus_message_enter_container 本身来完成预验证步骤。

type 参数是 属性 的类型,如果它与消息数据的类型不匹配,那么 sd_bus_message_enter_container 将 return -ENXIO.