Xcode IORegistry中的OSDictionary*注入
我正在尝试创建一个新词典,并将其插入iRegistry。我已经设法注入了简单的字符串或数据值,但仅此而已 我的方法是通过修改的iopciffamily.kext,它不是为了特定的目的,只是为了学习 我的1行值代码是这样的Xcode IORegistry中的OSDictionary*注入,xcode,macos,iokit,kernel-extension,Xcode,Macos,Iokit,Kernel Extension,我正在尝试创建一个新词典,并将其插入iRegistry。我已经设法注入了简单的字符串或数据值,但仅此而已 我的方法是通过修改的iopciffamily.kext,它不是为了特定的目的,只是为了学习 我的1行值代码是这样的 if (product == id){ setProperty("test", "test") } 还有另一种方法 if (product == id){ propTable->setObject("TEST", prop) prop->release(); }
if (product == id){ setProperty("test", "test") }
还有另一种方法
if (product == id){ propTable->setObject("TEST", prop) prop->release(); }
propTable是父字典,所以我必须创建一个子字典,我可以使用setObject参数向其中注入值
有人知道怎么做吗?我猜一定是这样的:
propTable->newTable->setObject(etc)
但我没有想到如何为propTable创建newTable,以便将其插入到现有的product==id中
非常感谢,如果让人困惑,很抱歉。不用于用英语解释与代码相关的内容。如果我正确理解您的问题,您需要工厂功能 例如:
OSDictionary* prop_dict = OSDictionary::withCapacity(1);
OSString* val = OSString::withCString("test");
if (!prop_dict || !val)
{
// handle error...
}
prop_dict->setObject("test", val);
val->release(); val = NULL;
然后,要在属性表中使用它:
propTable->setObject("NewProperty", prop_dict);
prop_dict->release(); prop_dict = NULL;
谢谢你,先生!正是我所需要的。有趣的是,我尝试了类似的东西,但没有使用OSString,不用说它不起作用。