0

有没有办法为 IOKit 中定义的常量和枚举获取字符串表示形式?

我在 IOKit 中搜索并尝试通过控制台注销 USB 设备返回的一些参数。但我最终得到了数字列表。还有其他方法可以列出这些含义吗?

例如在 IOHIDKeys.h

enum IOHIDElementType {
    kIOHIDElementTypeInput_Misc        = 1,
    kIOHIDElementTypeInput_Button      = 2,
    kIOHIDElementTypeInput_Axis        = 3,
    kIOHIDElementTypeInput_ScanCodes   = 4,
    kIOHIDElementTypeOutput            = 129,
    kIOHIDElementTypeFeature           = 257,
    kIOHIDElementTypeCollection        = 513
};
typedef enum IOHIDElementType IOHIDElementType;

或者更糟(对我来说)在 IOHIDUsageTables.h 我不得不查找十六进制值并在标题中找到它......例如:

kHIDUsage_GD_Joystick   = 0x04, /* Application Collection */
kHIDUsage_GD_GamePad    = 0x05, /* Application Collection */
kHIDUsage_GD_Keyboard   = 0x06, /* Application Collection */
kHIDUsage_GD_Keypad = 0x07, /* Application Collection */
4

1 回答 1

1

您可以使用经典的切换方法,例如。

const char *IOHIDElemtType2str(IOHIDElementType type)
{
    switch(type)
    {
        case kIOHIDElementTypeInput_Misc:
            return "kIOHidElementTypeInput_Misc";
    }
}

等等。

于 2010-09-13T12:23:25.067 回答