objective-c - 在 objective-c 中获取显卡信息

标签 objective-c macos

我需要在我的应用程序中获取显卡信息。我需要的信息与 Graphics/Displays: 部分下的 *system_profiler SPDisplays* 命令显示的信息相同。 我已经考虑过使用 sysctl(),但我无法在 sysctl.h 中为显卡找到合适的硬件选择器

高度赞赏的任何建议。

最佳答案

在摆弄 IOKit 之后,我设法获取了所需的信息。代码可以看here ( original source ) 及以下:

- (void)displayGraphicsInfo
{
    // Get dictionary of all the PCI Devicces
    CFMutableDictionaryRef matchDict = IOServiceMatching("IOPCIDevice");

    // Create an iterator
    io_iterator_t iterator;

    if (IOServiceGetMatchingServices(kIOMasterPortDefault,matchDict,
                                     &iterator) == kIOReturnSuccess)
    {
        // Iterator for devices found
        io_registry_entry_t regEntry;

        while ((regEntry = IOIteratorNext(iterator))) {
            // Put this services object into a dictionary object.
            CFMutableDictionaryRef serviceDictionary;
            if (IORegistryEntryCreateCFProperties(regEntry,
                                                  &serviceDictionary,
                                                  kCFAllocatorDefault,
                                                  kNilOptions) != kIOReturnSuccess)
            {
                // Service dictionary creation failed.
                IOObjectRelease(regEntry);
                continue;
            }
            const void *GPUModel = CFDictionaryGetValue(serviceDictionary, @"model");

            if (GPUModel != nil) {
                if (CFGetTypeID(GPUModel) == CFDataGetTypeID()) {
                    // Create a string from the CFDataRef.
                    NSString *modelName = [[NSString alloc] initWithData:
                                           (NSData *)GPUModel encoding:NSASCIIStringEncoding];

                    NSLog(@"GPU Model: %@", modelName);
                    [modelName release];
                }
            }
            // Release the dictionary
            CFRelease(serviceDictionary);
            // Release the serviceObject
            IOObjectRelease(regEntry);
        }
        // Release the iterator
        IOObjectRelease(iterator);
    }
}

关于objective-c - 在 objective-c 中获取显卡信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077639/

相关文章:

objective-c - Objective C 只读 int?什么?

macos - Jenkins - FaSTLane 找不到 gem faSTLane

java - 编译和运行 Java 控制台应用程序 OS X 终端时出现问题

c - 如何告诉 NetBeans gnutls 在我的系统上的位置?

ios - 对象符合 Swift 协议(protocol)

iphone - iOS - 有清理 HTML 代码的好方法吗?

java - 如何用 Java 开发 iPhone 应用程序?

macos - Azure CLI 无法在 MacOS 上登录

macos - 将 NSWindow 显示为工具栏表

Objective-C继承;从父类向下转型/复制到派生类