2

Mac でソフトウェアを作成しており、IORegistryEntry の値を変更したいと考えています。IORegistryExplorer で表示できますが、編集できません。したがって、コードを介して編集する必要があることは私の理解です。これが私のコードです:

CFMutableDictionaryRef matchingDict = IOServiceNameMatching("AppleUSBMultitouchDriver");
io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, matchingDict);
if(service) {
 CFStringRef manufacturer = IORegistryEntryCreateCFProperty(service, CFSTR("Manufacturer"), kCFAllocatorDefault,0);
 NSLog(@"%@", (NSString*)manufacturer);
 kern_return_t err = IORegistryEntrySetCFProperty(service, CFSTR("Manufacturer"), CFSTR("test"));
 NSLog(@"error = %d", err);
}

これは出力されます

2010-04-10 16:09:09.015 Test[41548:a0f] Apple Inc.
2010-04-10 16:09:09.015 Test[41548:a0f] error = 0

しかし、IORegistryExplorer で値を確認した後も、値は変わりません。誰か提案はありますか?

ありがとうございました

4

3 に答える 3

1

これを可能にするには、通常、変更する特定のハードウェアのドライバーが、この変更を行うsetProperties()(IOKit内)を実装する必要があります。

Appleがメーカー名を変更できるようにAppleUSBMultitouchDriverにsetProperty()を実装する可能性は低いです。彼らは彼らがどんな種類の果物であるかを特定したいと思っています。;)

于 2010-04-10T21:39:15.233 に答える
0

これは、トラックパッドの設定を適切に変更する方法の例です。Trackpad.prefpane はまさにこれを行いますが、この設定をデフォルトのどこかに保存します (正確な場所がわからない場合は、ここで質問してください)。

PS getEVSHandle() は MachineSettings.framework にあります。

PPS 10.5 および 10.6 でのみチェック済み。

NSInteger zero = 0, one = 1;

CFNumberRef _numberWith0 = CFNumberCreate(kCFAllocatorDefault, kCFNumberNSIntegerType, &zero);
CFNumberRef _numberWith1 = CFNumberCreate(kCFAllocatorDefault, kCFNumberNSIntegerType, &one);

CFMutableDictionaryRef propertyDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, NULL, NULL);

CFDictionarySetValue(propertyDict, @"TrackpadThreeFingerSwipe", flag ? _numberWith1 : _numberWith0);

io_connect_t connect = getEVSHandle();

if (!connect)
{
// error
}

kern_return_t status = IOConnectSetCFProperties(connect, propertyDict);

if (status != KERN_SUCCESS)
{
//error
}

CFRelease(propertyDict);
于 2010-07-01T17:55:27.770 に答える
0

IORegistryEntrySetCFProperty の代わりに IOConnectSetCFProperties を使用します。設定したい設定を含むディクショナリを渡します。

たとえば、ナビゲートするための 3 本指のスワイプをオフにするには、{ TrackpadThreeFingerSwipe = 0; を含む辞書で呼び出します。}

于 2010-04-11T14:01:26.637 に答える