KsDeviceRegisterAdapterObject 函数 (ks.h)

KsDeviceRegisterAdapterObject 函数向 AVStream 注册 DMA 适配器对象,以便在指定设备上执行散点/收集 DMA。 为 Win64 编译的所有驱动程序都应改用 IKsDeviceFunctions::RegisterAdapterObjectEx

语法

void KsDeviceRegisterAdapterObject(
  [in] PKSDEVICE       Device,
  [in] PADAPTER_OBJECT AdapterObject,
  [in] ULONG           MaxMappingsByteCount,
  [in] ULONG           MappingTableStride
);

参数

[in] Device

指向 KSDEVICE 结构的指针,该结构表示要为其注册适配器对象的 AVStream 设备。

[in] AdapterObject

指向 IoGetDmaAdapter 返回的 DMA_ADAPTER 结构的指针,该结构表示 DMA 控制器。

[in] MaxMappingsByteCount

此参数指定设备可以处理单个映射的最大字节数。 允许 AVStream 自动将大块连续物理内存分解为多个散点/收集元素,这些元素对 DMA 传输中的单个映射施加大小限制。 不保证在页面边界上发生中断。

[in] MappingTableStride

此参数指定映射表中每个条目所需的字节数。 此 大小 必须至少为 (KSMAPPING) ,并且可以根据需要尽可能大。

微型驱动程序可以使用额外的空间作为上下文信息。

返回值

备注

调用 KsDeviceRegisterAdapterObject 的 微型驱动程序负责以前通过 IoGetDmaAdapter 获取适配器对象。

另请注意,如果微型驱动程序为设备上的任何筛选器上的任何引脚指定KSPIN_FLAG_GENERATE_MAPPINGS标志,则微型驱动程序在处理任何数据之前必须调用 KsDeviceRegisterAdapterObject 。 有关此标志的详细信息,请参阅 KSPIN_DESCRIPTOR_EX的参考页。 另请参阅 AVStream DMA 服务

如果将 MaxMappingByteCount 设置为一个物理页的长度,则不保证映射驻留在单个物理页上。 此外,如上述成员说明中所述,设置 MaxMappingsByteCount 并不能保证在页面边界上发生中断。 如果需要在页面边界上分隔,请考虑不指定映射大小限制;相反,手动将返回的散点/收集映射分解为页面对齐的区块。

另请参阅 在 64 位 AVStream 驱动程序中支持 DMA

要求

要求
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib
IRQL PASSIVE_LEVEL

另请参阅

IoGetDmaAdapter

KSFILTER_DESCRIPTOR

KSMAPPING

KSPIN_DESCRIPTOR_EX