小编Mic*_*mme的帖子

尝试获取自定义类型的 DBus 属性时发生致命错误

我正在尝试将UDisks2与 Qt 应用程序连接,并且读取自定义属性会使程序崩溃。

对于 SMART 属性,一切正常(包括自定义属性),但是当我尝试读取 RAID 设备属性ActiveDevices时,出现 Qt 致命错误并且应用程序崩溃

以下是说明该行为的测试程序:

#include <QApplication>

#include <QDBusMetaType>
#include <QDBusConnection>
#include <QDBusInterface>

#include <QDebug>


//create the structure as defined in 
// http://udisks.freedesktop.org/docs/latest/gdbus-org.freedesktop.UDisks2.MDRaid.html#gdbus-property-org-freedesktop-UDisks2-MDRaid.ActiveDevices 
struct MDRaidMember {
   QDBusObjectPath block;
   qint32 slot;
   QStringList state;
   qint64 numReadErrors;
   QVariantMap expansion;
};
Q_DECLARE_METATYPE(MDRaidMember)


//marshalling operator
QDBusArgument &operator<<(QDBusArgument &argument, const MDRaidMember& raidMember)
{
    argument.beginStructure();
    argument << raidMember.block;
    argument << raidMember.slot;
    argument << raidMember.state;
    argument << raidMember.numReadErrors;
    argument << raidMember.expansion;
    argument.endStructure();
    return argument;
}


//unmarshall …
Run Code Online (Sandbox Code Playgroud)

c++ qt dbus qtdbus

3
推荐指数
1
解决办法
1375
查看次数

标签 统计

c++ ×1

dbus ×1

qt ×1

qtdbus ×1