0

新しい辞書を作成してIORegistryに挿入しようとしています。単純な文字列またはデータ値を挿入することができましたが、それだけです。

私のアプローチは、変更されたIOPCIFamily.kextを介したものであり、特定の目的ではなく、学習のためだけのものです。

1行の値の私のコードは次のようなものです

if (product == id){ setProperty("test", "test") }

と別のアプローチ

if (product == id){ propTable->setObject("TEST", prop) prop->release(); }

propTableは親ディクショナリであるため、setObjectパラメータを使用して値を挿入できる子ディクショナリを作成する必要があります。

誰かがこれを行う方法についてのアイデアを持っていますか?私はそれがこのようなものでなければならないと思います:

propTable->newTable->setObject(etc)

しかし、propTableのnewTableを作成して、それが見つかったproduct==idsの既存のものに挿入する方法がわかりませんでした。

ご迷惑をおかけして申し訳ございません。コード関連のものを英語で説明するために使用されていません。

4

1 に答える 1

0

私があなたの質問を正しく理解しているなら、あなたはOSDictionary::withCapacityファクトリ関数が欲しいです。

例えば:

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;
于 2012-04-28T13:31:33.453 に答える