我正在尝试将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)