IOServiceGetMatchingServices
次のようなプロパティ ディクショナリを使用して取得したデバイスを見つけました。
kernResult = IORegistryEntryCreateCFProperties(nextMedia,
(CFMutableDictionaryRef *)&props,
kCFAllocatorDefault, 0);
その辞書から、アイコンの情報を抽出できます。
NSString *bId = [props valueForKeyPath:@"IOMediaIcon.CFBundleIdentifier"];
NSString *rFile = [props valueForKeyPath:@"IOMediaIcon.IOBundleResourceFile"];
これら2つは私にこれを与えます(例として):
com.apple.iokit.IOStorageFamily (バンドル識別子) Internal.icns (リソース ファイル)
この方法を使用してアイコンを抽出しようとしました:
NSBundle *bundleWithIcon = [NSBundle bundleWithIdentifier:bId];
NSString *iconPath = [bundleWithIcon pathForResource:rFile ofType:nil];
しかしbundleWithIcon
ですnil
。
これはアイコンを取得する正しい方法ですか?
でロードできるようにするには、どうにかしてバンドルをロードする必要があると思いますbundleWithIdentifier
。どうすればこれを行うことができますか?
PS:(私が思うに)同じことを尋ねようとする別の質問がありますが、これが正しい方法であるかどうかではなく、バンドルのみを要求します。