AVStream 分配器

AVStream 类驱动程序使用 分配器 以称为 的单位分配数据缓冲区。 帧是一个连续内存块,其大小通过KSPIN_DESCRIPTOR_EXAllocatorFraming 成员指定。

微型驱动程序通过 流指针 API 访问这些缓冲区;调用 KsPinGetLeadingEdgeStreamPointer 以获取流中的指针。

AVStream 客户端可以使用只读属性 KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX获取有关引脚的成帧要求的信息。 此属性返回描述引脚的成帧要求 KSALLOCATOR_FRAMING_EX 类型的结构。

不再使用数据时,AVStream 使用分配器释放缓冲区。

AVStream 提供默认分配器。 默认分配器根据微型驱动程序在 KSPIN_DESCRIPTOR_EX 结构的 AllocatorFraming 成员中提供的分配器要求分配池内存。

具有特定于设备的分配要求的供应商可以编写包含其自己的分配例程的微型驱动程序。 例如,如果驱动程序从 通用 DMA 缓冲区分配内存,则可以提供分配器。

若要提供分配器,请提供一个 KSALLOCATOR_DISPATCH 结构,其中包含指向以下供应商提供的回调例程的指针:

KSPIN_DISPATCH 结构的分配器成员中提供指向此分配器调度结构的指针,描述此分配器将实例化帧的引脚。

在相应KSPIN_DESCRIPTOR_EX结构的 Dispatch 成员中提供指向此固定 调度 结构的指针。 若要详细了解 AVStream 中的调度结构,请阅读 AVStream 调度表

在运行时,图形管理器 (例如, 内核流式处理代理 模块) 处理分配器选择。 图管理器 保证会选择供应商提供的分配器。

仅当连接处于内核模式时,才会选择内核模式分配器。 此外,如果分配器要求与分配器的功能不匹配,则可能会拒绝分配器。 如果未选择分配器,则永远不会调用 AVStrMiniInitializeAllocator 回调例程。

另请参阅 AVStream DMA 服务和流指针