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运行, 因此 Context 指向的数据应位于非分页内存中。
[in] WriteToDevice
指定 DMA 传输的方向。 值为 TRUE 表示从缓冲区传输到设备,值为 FALSE 表示从设备到缓冲区的传输。
返回值
VideoPortStartDma 返回以下状态代码之一:
返回代码 | 说明 |
---|---|
NO_ERROR | 操作已成功执行。 |
ERROR_NOT_ENOUGH_MEMORY | 没有足够的系统资源用于此操作。 |
注解
若要准备 DMA 传输操作, VideoPortStartDma:
- 刷新主机处理器缓存中的内存区域。
- 生成散点/收集列表。
- 调用视频微型端口驱动程序的 HwVidExecuteDma 回调。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows XP 和更高版本的 Windows 操作系统中可用。 |
目标平台 | 桌面 |
标头 | video.h (包括 Video.h) |
Library | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | <=DISPATCH_LEVEL |