DMA_START_HANDLER回调函数 (netdma.h)

注意 不支持 NetDMA 接口

Windows 8 及更高版本中。

ProviderStartDma 函数在指定的 DMA 通道上启动 DMA 传输。

语法

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [in] PVOID ProviderChannelContext,
  [in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
  [in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
  [in] ULONG DescriptorCount
)
{...}

参数

[in] ProviderChannelContext

一个指针,用于标识 DMA 通道的上下文区域。 DMA 提供程序在 pProviderChannelContext 参数中指定的位置将此句柄返回到 NetDMA ProviderAllocateDmaChannel 函数。

[in] DescriptorVirtualAddress

指向 DMA 描述符链接列表中第一个 NET_DMA_DESCRIPTOR 结构的虚拟地址的指针。 相应的物理地址在 DescriptorPhysicalAddress 参数中指定。

[in] DescriptorPhysicalAddress

指向 DMA 描述符链接列表中第一个 DMA 描述符的物理地址的指针。 相应的虚拟地址在 DescriptorVirtualAddress 参数中指定。

[in] DescriptorCount

DescriptorVirtualAddress 中的 DMA 描述符数。

注意 NetDMA 版本 2.0 之前的 NetDMA 提供程序驱动程序可以忽略 DescriptorCount 参数。 对于 NetDMA 2.0 及更高版本,此参数是 DMA 操作中描述符的计数。
 

返回值

ProviderStartDma 返回以下状态值之一:

返回代码 说明
STATUS_SUCCESS
操作已成功完成。
STATUS_RESOURCES
由于资源不足,操作失败。
STATUS_UNSUCCESSFUL
操作由于未指定的原因而失败。

注解

NetDMA 接口调用 DMA 提供程序驱动程序的 ProviderStartDma 函数来启动 DMA 传输。 分配 DMA 通道后,NetDMA 接口可以随时调用 ProviderStartDma 。 NetDMA 接口在调用 ProviderAbortDmaProviderResetChannel 或后,必须调用 ProviderStartDma DMA 通道的 ProviderAllocateDmaChannel 函数。

DMA 传输的源是 DMA 描述符的链接列表。 DescriptorVirtualAddress 参数中NET_DMA_DESCRIPTOR结构的 NextDescriptor 成员包含链接列表中下一个NET_DMA_DESCRIPTOR结构的物理地址。

注意 在 NetDMA 2.0 及更高版本中,描述符的链接列表不是以 NULL 结尾的。 链接列表中最后一个描述符中的 NextDescriptor 成员指定将在对 ProviderAppendDma 函数的后续调用中使用的NET_DMA_DESCRIPTOR结构的物理地址。 NetDMA 2.0 提供程序驱动程序可以在 NextDescriptor 中缓存地址,并使用此地址作为下一个 Append 操作的链接列表的开头。
 
若要执行启动操作,DMA 提供程序在完成对当前描述符的任何处理后,必须忽略现有的 DMA 描述符列表(如果有)。 DMA 提供程序必须忽略当前NET_DMA_DESCRIPTOR结构中的 NextDescriptor 成员,并加载 ProviderStartDma 指定的描述符。

ProviderStartDma 启动初始 DMA 传输后,NetDMA 接口可以调用 ProviderAppendDma 函数,以将其他数据追加到传输中。

NetDMA 在 IRQL <= DISPATCH_LEVEL 调用 ProviderStartDma

要求

要求
最低受支持的客户端 支持 Windows Server 2008 中的 NetDMA 2.0 驱动程序。 支持 Windows Server 2008 中的 NetDMA 1.1 驱动程序。 支持 Windows Server 2008 和 Windows Vista 中的 NetDMA 1.0 驱动程序。
目标平台 Windows
标头 netdma.h (包括 Netdma.h)
IRQL <= DISPATCH_LEVEL

另请参阅

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel