VideoPortStartDma 函数 (video.h)
VideoPortStartDma 函数为 DMA作准备系统。 一旦提供适当的资源,VideoPortStartDma 创建散点/收集列表,初始化系统资源,并调用视频微型端口驱动程序提供的 HwVidExecuteDma 例程来执行 DMA作。
语法
VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortStartDma(
[in] IN PVOID HwDeviceExtension,
[in] IN PVP_DMA_ADAPTER VpDmaAdapter,
[in] IN PVOID Mdl,
[in] IN ULONG Offset,
[in, out] IN OUT PULONG pLength,
[in] IN PEXECUTE_DMA ExecuteDmaRoutine,
[in] IN PVOID Context,
[in] IN BOOLEAN WriteToDevice
);
参数
[in] HwDeviceExtension
指向微型端口驱动程序的设备扩展的指针。
[in] VpDmaAdapter
指向表示总线主适配器的 VP_DMA_ADAPTER 结构的指针。 此结构从调用 videoPortGetDmaAdapter返回。
[in] Mdl
指向描述缓冲区的 MDL 的指针。 此指针从对视频端口驱动程序的 VideoPortLockBuffer 函数的调用返回。
[in] Offset
指定 DMA作开始的缓冲区中的字节偏移量。 Mdl 参数描述此缓冲区。
[in, out] pLength
指向一个变量的指针,该变量指定要传输的请求传输大小(以字节为单位)以及接收要传输的实际大小。 发生以下任一事件时,将更新变量:VideoPortStartDma 返回或调用 HwVidExecuteDma。 因此,即使在 VideoPortStartDma 返回之前,从 HwVidExecuteDma 读取此变量是安全的。
[in] ExecuteDmaRoutine
指向微型端口驱动程序提供的 HwVidExecuteDma 回调例程的指针。 VideoPortStartDma 调用此例程来编程硬件寄存器并启动实际的 DMA作。
[in] Context
指向要传递给微型端口驱动程序 HwVidExecuteDma 回调例程的驱动程序确定上下文的指针。 由于 HwVidExecuteDma 回调例程在DISPATCH_LEVEL运行,因此 上下文 点的数据应位于非分页内存中。
[in] WriteToDevice
指定 DMA 传输的方向。 值为 TRUE 表示从缓冲区到设备的传输,FALSE 的值 表示从设备到缓冲区的传输。
返回值
VideoPortStartDma 返回以下状态代码之一:
返回代码 | 描述 |
---|---|
NO_ERROR | 该作已成功执行。 |
ERROR_NOT_ENOUGH_MEMORY | 此作没有足够的系统资源。 |
言论
若要准备 DMA 传输作,VideoPortStartDma:
- 刷新主机处理器缓存中的内存区域。
- 生成散点/收集列表。
- 调用视频微型端口驱动程序 HwVidExecuteDma 回调。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows XP 和更高版本的 Windows作系统中可用。 |
目标平台 | 桌面 |
标头 | video.h (include Video.h) |
库 | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | <=DISPATCH_LEVEL |