视频 VBI 捕获

DirectX 5.2 引入了两个 DirectDraw 驱动程序函数,用于视频垂直消隐间隔 (VBI) 捕获。 这些函数是 DxTransferDxGetTransferStatus

DxTransfer 函数有助于视频和 VBI 捕获。 由于此函数是在 IRQ 时间调用的,因此它必须尽快返回。 如果在调用 DxTransfer 时显示硬件尚未准备好执行总线主机,则视频微型端口驱动程序应保留包含多个总线主机的内部队列, (队列中保存的实际总线主机数由驱动程序开发人员) 决定。 这允许硬件在硬件准备就绪时执行总线主机。 换句话说,驱动程序不应轮询并等待总线主机完成。

DirectDraw 调用 DxTransfer 函数时,它会在 DDTRANSFERINFO 结构的 dwTransferID 成员中提供传输 ID。 然后,视频微型端口驱动程序可以在调用 DxGetTransferStatus 函数时使用此标识。

总线主机完成后,显示硬件必须生成 IRQ。 然后,视频微型端口驱动程序必须调用 DxEnableIRQ 中指定的 IRQCallback 函数。 在此 IRQCallback 调用中,视频微型端口驱动程序指定DDIRQ_BUSMASTER标志。 然后,DirectDraw 调用 DxGetTransferStatus 函数来确定哪个总线主节点已完成。 视频微型端口驱动程序必须返回传输 ID (dwTransferID) DirectDraw 在之前的 DxTransfer 调用中传递给驱动程序。 这样,如果驱动程序在队列中具有五个总线主机,DirectDraw 可以确定最近完成的总线主机。