我正在为大型存储设备连接到机器时加载mac os的内核扩展。
我为plist文件创建工作正常,它在大容量存储设备连接到机器时加载内核扩展但我想找到特定目的的连接设备供应商ID和产品ID请帮助..
答案 0 :(得分:0)
加载特定VID / PID组合的kext
如果您希望仅为设备加载某个VID / PID组合的kext,则应扩展您的IOKit个性词典。 Apple在QA1076中记录了USB设备/接口的完整规则,但实际上,您需要将idVendor
和idProduct
的整数属性添加到Info.plist中的个性:
<key>idVendor</key>
<integer>1234</integer>
<key>idProduct</key>
<integer>5678</key>
请注意,您需要将ID从十六进制转换为十进制。
如果您需要支持多个产品ID,则可以使用idProductArray
代替idProduct
。此属性的值是一个包含整数的数组。
以编程方式
访问供应商/产品ID如果您需要VID / PID信息以某种方式影响您的代码流,您可以直接在设备或接口对象上查询idVendor / idProduct属性。例如,假设您要在驱动程序实例的start()
函数中执行此操作:
bool MyKext::start(IOService* provider)
{
// …
// call to superclass's start(), etc.
// …
// Fetch vendor ID:
OSNumber* vid_num = OSDynamicCast(OSNumber, provider->getProperty(kUSBVendorID));
if (vid_num != nullptr)
{
uint32_t vid = vid_num->unsigned32BitValue();
// use vid here
}
// …
}
您可以类似地将kUSBVendorID
替换为kUSBProductId
来查询产品ID。