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 |