からの関数のいくつかを使用して、IOKit/kext/KextManager.h
カーネルに拡張機能をプログラムでロードしていますが、新しいエラー値が発生しています。例えば:
OSReturn osr = KextManagerLoadKextWithIdentifier(...);
// => -603947004
この値を、にある人間が読める形式の定義の1つに変換するにはどうすればよいlibkern/OSReturn.h
ですか?
からの関数のいくつかを使用して、IOKit/kext/KextManager.h
カーネルに拡張機能をプログラムでロードしていますが、新しいエラー値が発生しています。例えば:
OSReturn osr = KextManagerLoadKextWithIdentifier(...);
// => -603947004
この値を、にある人間が読める形式の定義の1つに変換するにはどうすればよいlibkern/OSReturn.h
ですか?
@pmjordanのコメントによると、からの定義を使用して単純なマッピング関数を作成しましたOSReturn.h
。
- (void)human_readable_libkern_metaclass_error_message:(int) n {
switch(n){
case 0:
printf("%s", "no error");
break;
case kOSMetaClassInternal:
// libkern_metaclass_err(1) -603979775
printf("%s", "Internal OSMetaClass run-time error.");
break;
case kOSMetaClassHasInstances:
// libkern_metaclass_err(2) -603979774
printf("%s", "A kext cannot be unloaded because there are instances derived from Libkern C++ classes that it defines.");
break;
case kOSMetaClassNoInit:
// libkern_metaclass_err(3) -603979773
printf("%s", "Internal error: The Libkern C++ class registration system was not properly initialized during kext loading.");
break;
case kOSMetaClassNoTempData:
// libkern_metaclass_err(4) -603979772
printf("%s", "Internal error: An allocation failure occurred registering Libkern C++ classes during kext loading.");
break;
case kOSMetaClassNoDicts:
// libkern_metaclass_err(5) -603979771
printf("%s", "Internal error: An allocation failure occurred registering Libkern C++ classes during kext loading.");
break;
case kOSMetaClassNoKModSet:
// libkern_metaclass_err(6) -603979770
printf("%s", "Internal error: An allocation failure occurred registering Libkern C++ classes during kext loading.");
break;
case kOSMetaClassNoInsKModSet:
// libkern_metaclass_err(7) -603979769
printf("%s", "Internal error: An error occurred registering a specific Libkern C++ class during kext loading.");
break;
case kOSMetaClassNoSuper:
// libkern_metaclass_err(8) -603979768
printf("%s", "Internal error: No superclass can be found for a specific Libkern C++ class during kext loading.");
break;
case kOSMetaClassInstNoSuper:
// libkern_metaclass_err(9) -603979767
printf("%s", "Internal error: No superclass can be found when constructing an instance of a Libkern C++ class.");
break;
case kOSMetaClassDuplicateClass:
// libkern_metaclass_err(10) -603979766
printf("%s", "A duplicate Libkern C++ classname was encountered during kext loading.");
break;
case kOSMetaClassNoKext:
// libkern_metaclass_err(11) -603979765
printf("%s", "Internal error: The kext for a Libkern C++ class can't be found during kext loading.");
break;
default:
printf("%s", "Unknown: error not defined in <libkern/OSReturn.h>)");
break;
}
}
XXXの読み込みに失敗しました-(libkern / kext)特権がありません。システム/カーネルログでエラーを確認するか、kextutil(8)を試してください。
ルート権限なしでkextloadを試行したときに表示されるエラーメッセージ。
-603947004 - this code appears in OSReturn when you try to load the kext via code without root privileges. The above code for translation works well for defined cases but for undefined error codes invoking the command via terminal helps.