首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何覆盖DriverKit OSData内部缓冲区的部分?

如何覆盖DriverKit OSData内部缓冲区的部分?
EN

Stack Overflow用户
提问于 2020-05-28 14:48:00
回答 1查看 97关注 0票数 1

OSData的文档说:"...You可以向它们添加字节并覆盖字节数组的部分。“我可以看到一个到追加字节的方法,但是我不明白我如何能够覆盖缓冲区的一部分。

另一种选择是使用IONewZero分配我需要的许多类型的元素。我是我的案子,我只需要int的这个。

示例:

代码语言:javascript
复制
T* dataBuffer = IONewZero(T, SIZE);

然后处理:

代码语言:javascript
复制
IOSafeDeleteNULL(dataBuffer_, T, SIZE);

与使用OSData / IOSafeDeleteNULL的解决方案相比,使用IONewZero对象有哪些优点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-28 20:08:59

我认为文档可能只是从OSData的内核变体中复制粘贴的。我在很多地方都见过,尤其是USBDriverKit。

OSData与其他OSTypes( OSArrayOSDictionaryOSNumber等)一起处理类似plist的数据结构(即设置和获取服务对象的属性)。它还用于用户客户端外部方法的带内(<= 4096字节) "struct“参数。

在这些场景之外,我能看到的唯一用途是,您绝对需要引用--计数一小块数据。但是,对于正在进行中的数据,它肯定不是一个特别方便或有效的容器。如果您随后需要将数据发送到设备或将其映射到用户空间,那么IOBufferMemoryDescriptor可能是一个更好的选择(同时也是参考计数),尽管它的重量级更大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62067639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档